Aide à un gros débutant.

Résolu/Fermé
Le Geek Messages postés 19 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 26 mai 2008 - 27 janv. 2008 à 18:57
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 - 27 janv. 2008 à 19:42
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
27 janv. 2008 à 19:07
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 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
27 janv. 2008 à 19:19
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 mercredi 23 janvier 2008 Statut Membre Dernière intervention 26 mai 2008 2
27 janv. 2008 à 19:24
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
27 janv. 2008 à 19:29
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 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
27 janv. 2008 à 19:31
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 mercredi 23 janvier 2008 Statut Membre Dernière intervention 26 mai 2008 2
27 janv. 2008 à 19:32
c'est bon, merci beaucoup sinon comment refaire une autre opération après ?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
27 janv. 2008 à 19:42
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