Probleme de syntaxe

tchoubaka Messages postés 71 Statut Membre -  
tchoubaka Messages postés 71 Statut Membre -
bonjour les gars, voici un programme sur lequel je travaille. en fait je suis entrain de programmer
une calculatrice et comme vous voyez, mon programme est constitue d'une fonction principale (int main),
et pour l'instant de trois sous-programmes. J'explique le fonctionnement:
- Lorsque je lance la compilation, c'est d'abord la fonction <<nombre()>> qui affiche. dans
celle-ci, j'aimerais que si j'entre un nombre, il affiche a l'ecran le 2eme printf de cette meme fonction.
mais si j'entre une lettre alphabetique, il m'affiche plutot une erreur et me renvoi a la question combien de nombre.
en fait je n'arrive pas a faire ca. C'est ma premiere peocuppation.

- Ensuite c'est la fonction <<menu()>> qui affiche; bref dans celle-ci je n'ai pas de probleme.

- Et enfin c'est la fonction <<addition(long *m)>> ou j'utilise pour effectuer mon calcul le
monbre de valeur que j'ai fait entrer dans la fonction <<nombre()>>. Ici je suis oblige de travailler avec les
pointeurs. Rassurez-vous la syntaxe de la fonction n'est pas fausse. le probleme ici c'est: a partir de ...
for (i=1; i<*m; i++)
{
printf(" entrer le nombre numero: %ld ", i);
scanf(" %ld\n", &*m);
}
rep_add = rep_add + m[i] ;

et ca n'affiche pas le resultat de l'addition je ne comprend pas pourquoi.
C'EST A CES NIVEAUX QUE J'AI DES PROBLEMES

#include <stdio.h>
#include <stdlib.h>

//************** prototypedefonction****************************************
void menu();
int nombre();
int addition(long *m);

//******************************* variable globale****************************************
long n=0, choix;
long i;
unsigned test=1;

/////////////////////////////////////////////////////////////////////////////////////////////
// PROGRAMME PRINCIPAL
/////////////////////////////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
char quit;
quit='a';
nombre();
do
{
menu();
getch();
} while(quit!= 'a');
return 0;
}

//////////////////////////////////////////////////////////////////////////////////////////////
// sous programme void menu
/////////////////////////////////////////////////////////////////////////////////////////////
void menu()
{
printf("\n\n\n\n");
printf(" CALCULATRICE\n\n\n");
printf(" 1 - ADDITION\n\n");
printf(" FAITES VOTRE CHOIX EN APPUYANT LA TOUCHE 1");
scanf("%ld", &choix);
switch(choix)
{
case 1:
addition(&n);
break;
}
printf(" appuyer sur une touche pour sortir");
}

/////////////////////////////////////////////////////////////////////////////////////////////
// sous programme nombre
/////////////////////////////////////////////////////////////////////////////////////////////
int nombre()
{
printf("combien de nombre voulez-vous utiliser pour effectuer ce calcul\n");
scanf("%ld", &n);
printf("vous avez choisie %ld nombres pour votre calcul",n);
}

/////////////////////////////////////////////////////////////////////////////////////////////
// sous programme addition
/////////////////////////////////////////////////////////////////////////////////////////////
int addition(long *m)
{
int rep_add=0;
printf(" BIENVENU AU PROGRAMME D'ADDITIION\a\n");
printf(" entrer %ld nombres\n",*m);
for (i=1; i<*m; i++)
{
printf(" entrer le nombre numero: ", i);
scanf(" %ld\n", &*m);
}
rep_add = rep_add + m[i] ;
printf(" la reponse de cette operation est: %ld", rep_add);
return 0;
}

-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------

3 réponses

Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
for (i=1; i<*m; i++)
{
printf(" entrer le nombre numero: %ld ", i);
scanf(" %ld\n", &*m);
}
rep_add = rep_add + m[i] ;

ici tu n'ajoutes que le dernier élément dans rep_add ...

PS : lorsque tu donnes ton code, utilise stp les balises < code > (bouton à droite de gras italique souligné)
0
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
ensuite dans ta boucle tu changes toujours la même valeur de m (un tableau ? ), les anciens chiffres que tu indiques sont écrasés...

de plus, je trouve vraiment étrange &*m, tu n'aurais pas pu mettre m tout court ?
0
tchoubaka Messages postés 71 Statut Membre 11
 
Merci de m avoir repondu pacorabanix; je crois que en mettant m tout court ca m affiche une erreur; je vais essayer pour voir ce que ca va donner. Merci encore
0