HOUSSAINE
Messages : 5 Points : 5401 Date d'inscription : 11/03/2010
| Sujet: la somme de deux entiers de plus de 400 chiffres Ven 16 Avr - 6:24 | |
| bonjours à tous le monde ce programme fait la somme de deux entiers de plus de 400 chiffres - Code:
-
#include<stdio.h> #include<stdlib.h> #include<math.h> #define N 450 int longeur(char tab[]) { char *p; int i=0; p=tab; while(*p) {i++;p++;} return i; } int maxim(int val1,int val2) { int max; if(val1>val2)max=val1; else max=val2; return max; } int minm(int val1,int val2) { int min; if(val1>val2)min=val2; else min=val1; return min; } somentier(char nbr1[],char nbr2[]) { char *chain; int log1,log2,r1,r2,i,j,t,k1=0,k2=0,pam,entr1[N],entr2[N]; double som[N],retn[N],val; log1=longeur(nbr1); log2=longeur(nbr2); r1=log1%4; r2=log2%4; // copier les elements de nbr1[] dans un tableau d'entiers for(i=log1-1;i>=0;i-=4) { if(i>=3) pam=4; else if (i>=0) pam=r1; chain=malloc((pam+1)*sizeof(char)); for(j=pam-1,t=0;j>=0;j--,t++) chain[j]=nbr1[i-t]; chain[pam]='\0'; entr1[k1]=atoi(chain); printf("entr[%d]=%d\n",k1,entr1[k1]); k1++; } // copier les elements de nbr2[] dans un tableau d'entiers for(i=log2-1;i>=0;i-=4) { if(i>=3) pam=4; else if (i>=0) pam=r2; chain=malloc((pam+1)*sizeof(char)); for(j=pam-1,t=0;j>=0;j--,t++) chain[j]=nbr2[i-t]; chain[pam]='\0'; entr2[k2]=atoi(chain); printf("entr[%d]=%d\n",k2,entr2[k2]); k2++; } // calculer la somme de les deux entiers som[0]=entr1[0]+entr2[0]; val=som[0]/10000; retn[0]=ceil(val)-1; som[0]=som[0]-retn[0]*10000; for(i=1;i<maxim(k1,k2);i++) { if(i<minm(k1,k2)) { som[i]=entr1[i]+entr2[i]+retn[i-1]; val=som[i]/10000; retn[i]=ceil(val)-1; som[i]=som[i]-retn[i]*10000; } else { if(k1>k2)som[i]=entr1[i]+retn[i-1]; else som[i]=entr2[i]+retn[i-1]; retn[i]=0; } } // afficher la somme de les deux entiers printf("la somme est :\n"); for(j=i-1;j>=0;j--) printf("%.0lf",som[j]); printf("\n");
} main() { char nbr1[N],nbr2[N]; printf("entrer le premier nombre entier :"); scanf("%s",nbr1); printf("entrer le deuxieme nombre entier :"); scanf("%s",nbr2); somentier(nbr1,nbr2); }
| |
|