[Besoin d'aide] Programmation C

Résolu
devildu06 Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   -  
devildu06 Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   58
 
Explique bien ton problème.
Tu veux quoi en fait?
0
devildu06 Messages postés 62 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   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 62 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
Merci
0