Aide à un gros débutant.

Résolu
Le Geek Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
mype Messages postés 2435 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.

7 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
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 opretation
 scanf("%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;
}
0
dandypunk Messages postés 832 Date d'inscription   Statut Membre Dernière intervention   83
 
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;

}
0
Le Geek Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   2
 
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.
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
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é...
0

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

Posez votre question
dandypunk Messages postés 832 Date d'inscription   Statut Membre Dernière intervention   83
 
Dans ta division, n'oublie pas de tester le cas ou nombre2 est nul.
Une division par 0 la machine n'aime pas
0
Le Geek Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   2
 
c'est bon, merci beaucoup sinon comment refaire une autre opération après ?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
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;
}
0