Debutant en C : petit problème^^

Debutant en C : petit problème^^ - C - Programmation

Marsh Posté le 25-01-2008 à 18:42:39    

bonjour a tous,
 
j'ai voulu faire une calculatrice sous console avec menus (addition , soustraction etc etc) sauf que j'ai un problème, en effet lorsque je fait une "calculatrice" toute simple qui ne sait que additioné sa marche ! alors que la quand je demande les nombres 1 et nombre 2 il les prend pour les deux et me donne pas le choix...
 
 
donc sous console sa me donne :
 
===Menus===
1.Addition
2.Multiplication
3.Division
4.Soustraction
 
Quel type de calcul voulez vous effectuez?
1
Entrez le nombre 1 :
Entrez le nombre 2 :
4
4 + 4 = 8
 
Or moi je veut que sa fasse :
 
Entrez le nombre 1 : 4
Entrez le nombre 2 : 5
 
4 + 5 = 9
 
 
 
 
Voila mon code :  
 
 
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
long choixcalcul=0;
printf ("===Menus===\n" );
printf("1.Addition\n" );
printf("2.Multiplication\n" );
printf("3.Division\n" );
printf("4.Soustraction\n" );
printf("\n" );
printf("Quel type de calcul voulez vous effectuez?\n" );
 
scanf("ld%",&choixcalcul);
 
if (choixcalcul=1)
{
long nombre1=0,nombre2=0,resultat=0;
printf("Entrez le nombre 1 :\n " );
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 :\n " );
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
}
 
system("PAUSE" );      
  return 0;
}
 
Merci

Reply

Marsh Posté le 25-01-2008 à 18:42:39   

Reply

Marsh Posté le 25-01-2008 à 19:06:08    

Salut,  
 
Tu as fait une faute dans ton premier scanf : c'est %ld, et pas ld%.  
Après ça tout marche bien.  
 
Par contre la commande PAUSE je ne sais pas ce que c'est sous Unix/MacOSX.  
 
Bon courage si tu veux gérer les parenthèses etc. ^^.

Reply

Marsh Posté le 25-01-2008 à 19:21:16    

merci ^^
 
j'apprend le C depuis 3 jours  
 
j'avais un peu honte de demander de l'aide , car c'est censé etre super basique mais bon.
 

Reply

Marsh Posté le 25-01-2008 à 19:39:32    

Au lieu de faire un if pour chaque opération, tu devrais récupérer les opérandes en dehors des if, puis calculer le résultat en fonction de l'opérateur choisi. Ca factorise un peu le code.  

Reply

Marsh Posté le 25-01-2008 à 22:12:48    

Attention aux tests en C :
if (choixcalcul=1)  
 
Il faut faire
if (choixcalcul==1)  

Reply

Marsh Posté le 29-01-2008 à 17:52:36    

tu peux aussi utiliser le switch ,votre programme sera bien testé
 
voilà comment t'initialiser si tu ne connais pas:

Citation :


long choixcalcul=0;
printf ("===Menus===\n" );
printf("1.Addition\n" );
printf("2.Multiplication\n" );
printf("3.Division\n" );
printf("4.Soustraction\n" );
printf("\n" );
 
printf("Quel type de calcul voulez vous effectuez?\n" );
 
scanf("ld%",&choixcalcul);


 
 
switch(choixcalcul)
{
case 1://si tu tape le 1
{
resultat = nombre1 + nombre2;
printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
break;
}
équivalent à:

Citation :

if (choixcalcul=1)
{
long nombre1=0,nombre2=0,resultat=0;
printf("Entrez le nombre 1 :\n " );
scanf("%ld", &nombre1);
printf("Entrez le nombre 2 :\n " );
scanf("%ld", &nombre2);
resultat = nombre1 + nombre2;
printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
}
 
system("PAUSE" );      
  return 0;
}


case 2:
{
          .
          .
          .
break;
}
 
//..et tu continue avec les autres operations: * / -  
et à la fin tu dois tester si le choix qui a été taper est different de (1,2,,3,4) ou non car tu as 4 seulement operations ..
comme suit
default: printf("error\n\a" );//choix=7 ou  
break;
}  

 
mais je te conseille d'utiliser les commandes le 'Entrez...' à l'exterieur du switch pour éviter la répétition.
aussi une remarque: je ne comprend pas pourquoi  l'initialisation par 0 ?

Citation :

long nombre1=0,nombre2=0,resultat=0;

Reply

Marsh Posté le 29-01-2008 à 17:54:35    

Citation :

Attention aux tests en C :
if (choixcalcul=1)  
 
Il faut faire
if (choixcalcul==1)  

Reply

Marsh Posté le 29-01-2008 à 19:21:57    

punaise c'est pas comme si ca faisait 10000 fois qu'on disiat que scnaf c'est de la merde en branche.
 
C'est quoi ce kikoolol qui decouvre internet là ?

Reply

Marsh Posté le 10-03-2008 à 22:58:31    

Joel F a écrit :

punaise c'est pas comme si ca faisait 10000 fois qu'on disiat que scnaf c'est de la merde en branche.
 
C'est quoi ce kikoolol qui decouvre internet là ?


Parcque les profs sont à mille lieues des réalités terrestre et continue à enseigner la programmation en C avec des scanf.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed