?? operation.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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -