Bonjours,
Je veux programmer en C un ensemble complet de fonctions pour additionner, multiplier des nombres en précision étendue. Les nombres devront avoir une taille possible de 100 chiffres en base 10000.Les nombres seront lus indifféremment au clavier ou sur fichier texte. Pae exemple, la syntaxe sur le fichier pourrait donner ça :
Un nombre
Un autre nombre
Un code opératoire (+ ou *)
Un nombre
Un autre nombre
Un code opératoire (+ ou *)
Un nombre
Un autre nombre
Un code opératoire (+ ou *)
Un nombre
Un autre nombre
Un code opératoire (+ ou *)
On arrête sur le caractère (q).
Le nom du fichier sera passé en utilisant argc et argv.
1ere question : est ce que je dois prendre une base 10000 ou 10 pour mes nombres ?
J’hésite…
2ème question : voici mon début de programme…Quelqu’un pourrait corriger ce j’ai fait ? Merci d’avance..
#include<stdio.h>
long int* add(long int,long int);
void main()
{
long int a,b,op,*p;
printf("quel op‚ration voulez vous effectuer,taper 1 pour la multiplication\n ou 2 pour l'addition\n");
scanf("%ld",&op);
printf("donner le premier chiffre\n");
scanf("%ld",&a);
printf("donner le deuxieme chiffre\n");
scanf("%ld",&b);
if(op==1)
{
p=add(a,b);
}
else
{
printf("le chiffre tape est mauvais");
exit(1);
}
printf("le nombre est [%ld][%ld] en base 10000\n",*p,*(p+1));
}
long int* add(long int a,long int b)
{
long int *p,base;
base=10000;
*p=(a+b);
if(*p>=base)
{
printf("passage ds le if");
a=((a+b)-base);
b=1;
p=(long int*) malloc(2*sizeof(long int));
*p=b;
*(p+1)=a;
}
else
{
printf("passage ds le else");
p=(long int*) malloc(1*sizeof(long int));
*(p)=0;
*(p+1)=(a+b);
}
return(p);