Probleme de syntaxe

Fermé
tchoubaka Messages postés 61 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 25 mai 2023 - 22 nov. 2009 à 20:47
tchoubaka Messages postés 61 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 25 mai 2023 - 24 nov. 2009 à 19:19
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 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
22 nov. 2009 à 20:50
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 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
23 nov. 2009 à 01:47
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 61 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 25 mai 2023 11
24 nov. 2009 à 19:19
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