⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 operation.py

📁 这是在python里相对于c语言中的结构体的函数构建。class的用法
💻 PY
字号:
#! /usr/bin/env python# -*- coding: Latin-1 -*-#==========================================================# nom du fichier : operation.py# auteur : Gaelle35241101# description : operations sur les entiers longs # ===========================================================from entierLong import * # permet d'importer la structure de entierLong.pyfrom utilitaire import * # permet d'utiliser les fonctions de utilitaire.py    # 閏rire ici vos fonctions de calcul sur les entiers longs#fonction de l'addtion des deux EntierLongs de meme signedef msadditionEntierLong(a,b):        signe=a.signe        size1=len(a.chiff) #la longeur de a        size2=len(b.chiff) #la longeur de b        size=max(size1,size2)        chiff=[]        vchiff=[]#un variable supplementaire pour faire l'addition sans carry	#ajouter 0 a la fin d'entierlong plus court         if size1<size2:                for i in range(size1,size+1,1):                        a.chiff.append(0)        else:                for i in range(size2,size+1,1):                        b.chiff.append(0)        #donner la valeur initiale pour chiff et vchiff        for i in range(0,size+1,1):                chiff.append(0)        for i in range(0,size+2,1):                vchiff.append(0)        #faire carry        vchiff[0]=a.chiff[0]+b.chiff[0]        for i in range(1,size,1):                vchiff[i]=a.chiff[i]+b.chiff[i]+(vchiff[i-1])//10        vchiff[size]=(vchiff[size-1])//10              for i in range(0,size+1,1):                chiff[i]=(vchiff[i])%10        return EntierLong(signe,chiff)#fonction de la multiplicaiton des deux EntierLongsdef multiplicationEntierLong(a,b):        signe=0	        if a.signe==b.signe:                signe=1        else:                signe=0        size1=len(a.chiff) #la longeur de n1        size2=len(b.chiff) #la longeur de n2        size=size1+size2        chiff=[]        vchiff=[]#un variable supplementaire pour faire l'addition sans carry        #ajouter 0 a la fin des entierlongs        for i in range(size1,size,1):                        a.chiff.append(0)        for i in range(size2,size,1):                        b.chiff.append(0)        #donner la valeur initiale pour chiff et vchiff        for i in range(0,size-1,1):                chiff.append(0)        for i in range(0,size-1,1):                vchiff.append(0)        #faire carry        vchiff[0]=(a.chiff[0])*(b.chiff[0])        for i in range(1,size-1,1):                for j in range(0,i+1,1):                        vchiff[i]=vchiff[i]+(a.chiff[j])*(b.chiff[i-j])                vchiff[i]+=(vchiff[i-1])//10        if vchiff[size-2]>9:                chiff.append((vchiff[size-2])//10)        if vchiff[size-2]>99:                chiff[size-1]=(chiff[size-1])%10                chiff.append(((vchiff[size-2])//10)//10)        for i in range(0,size-1,1):                chiff[i]=(vchiff[i])%10        return EntierLong(signe,chiff)#definition de la soustraction des deux EntierLongs  de meme signe et tel que abs(n1)>abs(n2)def mssoustracEntierLong(a,b):        signe=a.signe        size1=len(a.chiff) #la longeur de a        size2=len(b.chiff) #la longeur de b        #tranferer la soustraction a l'addtion        a.chiff.append(0)        for i in range(size2,size1+1,1):                b.chiff.append(0)        for i in range(1,size1+1,1):                a.chiff[i]=a.chiff[i]-1        for i in range(0,size1,1):                b.chiff[i]=10-b.chiff[i]        return EntierLong(signe,msadditionEntierLong(a,b).chiff)#definition de l'addition des deux EntierLongs quelconquesdef additionEntierLong(a,b):        c=a        if a.signe!=b.signe:                b.signe=not b.signe                if inferieurEgalPos(a,b)==1:                        c=mssoustracEntierLong(b,a)                        c.signe=not c.signe                else:                        c=mssoustracEntierLong(a,b)        else:                c=msadditionEntierLong(a,b)        return c#definition de la soustraction des deux EntierLongs quelconquesdef soustracEntierLong(a,b):        c=a        if a.signe!=b.signe:                b.signe=not b.signe                c=msadditionEntierLong(a,b)        else:                if inferieurEgalPos(a,b)==1:                        a,b=b,a                        c=mssoustracEntierLong(a,b)                        c.signe=not c.signe                else:                        c=mssoustracEntierLong(a,b)        return c        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -