[Besoin d'aide] Programmation C

Résolu
devildu06 Messages postés 72 Statut Membre -  
devildu06 Messages postés 72 Statut Membre -
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 460 Statut Membre 58
 
Explique bien ton problème.
Tu veux quoi en fait?
0
devildu06 Messages postés 72 Statut Membre
 
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 460 Statut Membre 58
 
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 72 Statut Membre
 
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 460 Statut Membre 58
 
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 11653 Statut Contributeur 1 847
 
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 72 Statut Membre
 
Merci
0