Problème en langage C

Fermé
maria_physio Messages postés 26 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 30 juillet 2010 - 30 nov. 2007 à 23:59
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 - 1 déc. 2007 à 00:20
Bonjour tout le monde bon voila j'ai essayé de faire un exercice sur la programmation en c en utilisant les fonctions mais j'ai trouvé quelques difficultés. je commence par vous énnoncer l'exercice et ensuite je vous expliquerai:

/*on désire effectuer des opérations arithmétiques(+,-,*,/) sur les nombres entiers enormes.
Pour cela utilisez un tableau de chiffres de 40 éléments pour stocker des entiers d'une taille
allant jusqu'à 40chiffres.
1)définir une fonction permettant de stocker un entier ds un tableau de (chiffres).
indication:entrer l'entier sous forme d'une chaine puis convertir chaque caractère en un entier
(chiffre) qui sera stocké ds le tableau.
2)Définir une fonction pour afficher l'entier.
3)Définir une fonction pr calculer la somme de 2 entiers ennormes.
4)même question pr la soustraction.*/

==> pour la 1ere fonction je 'lai faite et pour la 2eme j'ai un ptit souci car a l'affichage le 1er nombre de gauche ne s'affiche pas et voici le programme que j'ai faite:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
#include<ctype.h>
void stocker(char*,int*,int);
void afficher(int [],int);
main()
{ char ch[30];
int *t,n;
t=(int*)calloc(40,sizeof(int));
printf("entrez un entier\n"); gets(ch);
n=strlen(ch);
stocker(ch,t,n);

afficher(t,n);
getch();
}
void stocker(char ch[],int t[],int n)
{
int i,j;

if (ch[0]=='-')
t[39]=-1;
else
if(isdigit(ch[0])==1)
t[39]=1;

for(i=1,j=strlen(ch)-1;j>=0;i++,j--)
switch (ch[i])
{ case '0' : t[j]=0;break;
case '1' : t[j]=1;break;
case '2' : t[j]=2;break;
case '3' : t[j]=3;break;
case '4' : t[j]=4;break;
case '5' : t[j]=5;break;
case '6' : t[j]=6;break;
case '7' : t[j]=7;break;
case '8' : t[j]=8;break;
case '9' : t[j]=9;break;

}
}

void afficher (int *t,int n)
{ int i;
for(i=n-1;i>=0;i--)
printf(" %d ",t[i]);

}

==> pour les fonctions 3 et 4 je 'nai pa su les faire
DONC SVP SI VOUS POUVIEZ M'AIDER A CORRIGER L'ERREUR DE LA FONCTION D4AFFICHAGE ET SURTOUT DE MONTRER COMMENT FAIRE POUR LES FONCTIONS QUI EFFECTUENT LA SOMME ET LA SOUSTRACTION ET MERCI BCP DE VOTRE ATTENTION.
A voir également:

1 réponse

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
1 déc. 2007 à 00:20
dans ta fonction stocker il faut commencer a 0 c'est pour ça que sa affiche pas le premier chiffre
essaye avec ça:
for(i=0,j=strlen(ch)-1;j>=0;i++,j--)
0