[Besoin d'aide] Programmation C

Résolu/Fermé
devildu06 Messages postés 62 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 27 septembre 2009 - 12 avril 2009 à 15:38
devildu06 Messages postés 62 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 27 septembre 2009 - 12 avril 2009 à 17:22
Bonjour,
j'ai fait ce programme et j'ai droit a la fenetre "envoyer", "ne pas envoyer" mais je ne sais pas pourquoi
C'est censé etre une calculatrice ( Mon premier vrai programme :D)
Pouvez-vous m'aider en me disant ce qui cloche ?

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

int main(int argc, char *argv[])
{
printf("===MENU===\n");
printf("1. Addition\n");
printf("2. Soustraction\n");
printf("3. Multiplication\n");
printf("4. Division\n\n\n");
char choixOperation = 0;
long nombre_1 = 0;
long nombre_2 = 0;
long resultat = 0;
scanf("%ld", choixOperation);
switch(choixOperation)
{
case 1:
printf("Indiquez le premier nombre\n");
scanf("%ld\n", nombre_1);
printf("Indiquez le second nombre\n");
scanf("%ld\n", nombre_2);
resultat = nombre_1 + nombre_2;
printf("Resultat : %ld\n", &resultat);
break;
case 2:
printf("Indiquez le premier nombre\n");
scanf("%ld\n", nombre_1);
printf("Indiquez le second nombre\n");
scanf("%ld\n", nombre_2);
resultat = nombre_1 - nombre_2;
printf("Resultat : %ld\n", &resultat);
break;
case 3:
printf("Indiquez le premier nombre\n");
scanf("%ld\n", nombre_1);
printf("Indiquez le second nombre\n");
scanf("%ld\n", nombre_2);
resultat = nombre_1 * nombre_2;
printf("Resultat : %ld\n", &resultat);
break;
case 4:
printf("Indiquez le premier nombre\n");
scanf("%ld\n", nombre_1);
printf("Indiquez le second nombre\n");
scanf("%ld\n", nombre_2);
resultat = nombre_1 + nombre_2;
printf("Resultat : %ld\n", &resultat);
break;
default:
printf("Va t'acheter un cerveau, il fallait un taper un nombre entre 1 et 4 . Idiot!");
break;
system("PAUSE");
}
}

7 réponses

gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 58
12 avril 2009 à 15:43
Explique bien ton problème.
Tu veux quoi en fait?
0
devildu06 Messages postés 62 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 27 septembre 2009
12 avril 2009 à 15:51
Quand je lance le programme, j'ai la question "votre choix ?"
Ensuite je dois taper un nombre: j'en tape un puis la fenetre du rapport d'erreur apparait et je dois fermer le programme.
0
gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 58
12 avril 2009 à 15:57
ah oui tu fais erreur: le & ne s'applique que dans la fonction scanf et non dans printf.
printf("Indiquez le premier nombre\n");
scanf("%ld\n", &nombre_1);

par exemple.
Rectifie et tu nous portes le rapport.
0
devildu06 Messages postés 62 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 27 septembre 2009
12 avril 2009 à 16:01
maintenant le probleme est que je dois taper deux nombres pour la variable nombre1 et que le resultat est toujours egal a 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 58
12 avril 2009 à 16:10
En fait que tu mets printf("Resultat : %ld\n", &resultat); tu demandes que ton programme affiche la réference (ou l'adresse du pointeur de ta variable resultat).
Pour avoir ton resultat exact tu dois enlever le & dans la fonction printf et donc avoir un truc du genre printf("Resultat : %ld\n", resultat);
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 avril 2009 à 16:23
Salut,
Il y a plusieurs erreurs dans ton code.
scanf("%ld", choixOperation); //attention choixOperation est un char et en plus il faut donner son adresse.
Ce qui donne : scanf("%c",&choixOperation);
Dans ce cas, tu devras utiliser le code ascii (case '1' etc). Ou sinon tu peux déclarer choixOperation en int.

scanf("%ld\n", nombre_1);
Pas de \n dans le scanf, et il faut toujours donner l'adresse. Soit :
scanf("%ld", &nombre_1);

printf("Resultat : %ld\n", &resultat); Là, il ne faut pas mettre l'adresse.
Correction : printf("Resultat : %ld\n", resultat);

De plus, fais attention aux dépassement des valeurs. La somme de deux long peut dépasser LONG_MAX.

N'oublie pas le return 0; final.

Et enfin tu peux raccourcir largement ton code, en sortant du switch tout ce qui est commun dans les case.

Cdlt
0
devildu06 Messages postés 62 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 27 septembre 2009
12 avril 2009 à 17:22
Merci
0