Aide à un gros débutant.
Résolu
Le Geek
Messages postés
19
Statut
Membre
-
mype Messages postés 2459 Date d'inscription Statut Membre Dernière intervention -
mype Messages postés 2459 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
alors voilà aimant l'informatique, je me suis lancé dans la programmation en language C pour commencer et je voulais m'entrainer en crééant un petit programme comme une calculatrice en console et voilà le résultat, cependant mon problème est qu'après avoir choisi le type d'opération que je voulais je n'arrive pas à accéder à celle-ci, donc je vous demande votre aide à vous les vrais programmeurs pour me dire oû ai-je commi une erreur ou un oubli.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long (operation);
printf("\tChoix de l'operation.\n\n\t");
printf("1. Addition.\n\t");
printf("2. Soustraction.\n\t");
printf("3. Multiplication.\n\t");
printf("4. Division.\n");
printf("Choisissez un type d'operation.\n\n");
scanf("%ld", operation);
switch(operation)
{
double resultat, nombre1, nombre2;
case 1:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
break;
case 2:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 - nombre2;
printf("%ld - %ld = %ld\n", nombre1, nombre2, resultat);
break;
case 3:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 * nombre2;
printf("%ld * %ld = %ld\n", nombre1, nombre2, resultat);
break;
case 4:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 / nombre2;
printf("%ld / %ld = %ld\n", nombre1, nombre2, resultat);
break;
default:
printf("Rechoisissez un type d'operation en tapant un chiffre correspondant (entre 1 et 4).\n");
break;
}
system("PAUSE");
return 0;
}
Ps: J'utilise comme IDE, DEV-C++.
en espérant que vous répondiez rapidement, merci.
alors voilà aimant l'informatique, je me suis lancé dans la programmation en language C pour commencer et je voulais m'entrainer en crééant un petit programme comme une calculatrice en console et voilà le résultat, cependant mon problème est qu'après avoir choisi le type d'opération que je voulais je n'arrive pas à accéder à celle-ci, donc je vous demande votre aide à vous les vrais programmeurs pour me dire oû ai-je commi une erreur ou un oubli.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long (operation);
printf("\tChoix de l'operation.\n\n\t");
printf("1. Addition.\n\t");
printf("2. Soustraction.\n\t");
printf("3. Multiplication.\n\t");
printf("4. Division.\n");
printf("Choisissez un type d'operation.\n\n");
scanf("%ld", operation);
switch(operation)
{
double resultat, nombre1, nombre2;
case 1:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
break;
case 2:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 - nombre2;
printf("%ld - %ld = %ld\n", nombre1, nombre2, resultat);
break;
case 3:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 * nombre2;
printf("%ld * %ld = %ld\n", nombre1, nombre2, resultat);
break;
case 4:
printf("Choisissez un nombre1.\n");
scanf("%ld", &nombre1);
printf("Choisissez un nombre2.\n");
scanf("%ld", &nombre2);
resultat = nombre1 / nombre2;
printf("%ld / %ld = %ld\n", nombre1, nombre2, resultat);
break;
default:
printf("Rechoisissez un type d'operation en tapant un chiffre correspondant (entre 1 et 4).\n");
break;
}
system("PAUSE");
return 0;
}
Ps: J'utilise comme IDE, DEV-C++.
en espérant que vous répondiez rapidement, merci.
Configuration: Windows 98 Internet Explorer 6.0
7 réponses
-
quand tu fais une déclaration de variable pas besoin de parenthèses
long operation;
il te manque le & dans ton scanf pour recupere la valeur de opretationscanf("%ld", &operation);
ensuite tu as déclaré resultat, nombre1 et nombre2 comme des double donc c'est %lf et pas %ld
et dans tes case il te manque les accolades
voici le programme corrigé (si tu n'as pas compris n'hésites pas a demander)#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { long operation; printf("\tChoix de l'operation.\n\n\t"); printf("1. Addition.\n\t"); printf("2. Soustraction.\n\t"); printf("3. Multiplication.\n\t"); printf("4. Division.\n"); printf("Choisissez un type d'operation.\n\n"); scanf("%ld", &operation); switch(operation) { double resultat, nombre1, nombre2; case 1: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 + nombre2; printf("%lf + %lf = %lf\n", nombre1, nombre2, resultat); } break; case 2: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 - nombre2; printf("%lf - %lf = %lf\n", nombre1, nombre2, resultat); } break; case 3: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 * nombre2; printf("%lf * %lf = %lf\n", nombre1, nombre2, resultat); } break; case 4: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 / nombre2; printf("%lf / %lf = %lf\n", nombre1, nombre2, resultat); } break; default: printf("Rechoisissez un type d'operation en tapant un chiffre correspondant (entre 1 et 4).\n"); break; } system("PAUSE"); return 0; } -
Les arguments de scanf doivent obligatoirement des pointeurs
Donc ton scanf devient scanf ("%ld", &operation)
Tu peux par ailleurs alléger ton code de la manière suivante :
printf("Choisissez un nombre1.\n"); scanf("%ld", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%ld", &nombre2); switch(operation) { double resultat, nombre1, nombre2; case 1: resultat = nombre1 + nombre2; printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat); break; case 2: resultat = nombre1 - nombre2; printf("%ld - %ld = %ld\n", nombre1, nombre2, resultat); break; case 3: resultat = nombre1 * nombre2; printf("%ld * %ld = %ld\n", nombre1, nombre2, resultat); break; case 4: resultat = nombre1 / nombre2 printf("%ld / %ld = %ld\n", nombre1, nombre2, resultat); break; default: printf("Rechoisissez un type d'operation en tapant un chiffre correspondant (entre 1 et 4).\n"); break; } -
enfin de compte c'est bon voilà le programme marche merci
cependant, j'aimerais savoir comment recommencer une opération à la suite d'une autre ?
merci mype et dandypunk. -
c'est toi qui a déclaré dans ton switch resultat, nombre1 et nombre2 comme des double donc des decimaux...donc c'est valable pour toutes les operations
si tu veux des decimaux que pour la division alors il faut que tu declares d'autres variable en long(entier) pour les utilisés dans les autres opérations avec des %ld
sinon le programme corrigé que je t'ai donné il fonctionne chez moi donc...je sais pas peut etre que tu as pas bien copié/collé... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Dans ta division, n'oublie pas de tester le cas ou nombre2 est nul.
Une division par 0 la machine n'aime pas -
c'est bon, merci beaucoup sinon comment refaire une autre opération après ?
-
tu peux rajouter un 5eme choix dans le menu pour quitter ainsi qu'un case 5 dans ton switch et tu fais un appel du main a la fin du switch
ça donne ça#include <stdio.h> #include <stdlib.h> int main(void) { long operation; printf("\tChoix de l'operation.\n\n\t"); printf("1. Addition.\n\t"); printf("2. Soustraction.\n\t"); printf("3. Multiplication.\n\t"); printf("4. Division.\n\t"); printf("5. Quitter.\n"); printf("Choisissez un type d'operation.\n\n"); scanf("%ld", &operation); switch(operation) { double resultat, nombre1, nombre2; case 1: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 + nombre2; printf("%lf + %lf = %lf\n", nombre1, nombre2, resultat); } break; case 2: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 - nombre2; printf("%lf - %lf = %lf\n", nombre1, nombre2, resultat); } break; case 3: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 * nombre2; printf("%lf * %lf = %lf\n", nombre1, nombre2, resultat); } break; case 4: { printf("Choisissez un nombre1.\n"); scanf("%lf", &nombre1); printf("Choisissez un nombre2.\n"); scanf("%lf", &nombre2); resultat = nombre1 / nombre2; printf("%lf / %lf = %lf\n", nombre1, nombre2, resultat); } break; case 5: exit(0); default: printf("Rechoisissez un type d'operation en tapant un chiffre correspondant (entre 1 et 4).\n"); break; } main(); system("PAUSE"); return 0; }