Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
724 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Debutant en C : petit problème^^

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Debutant en C : petit problème^^

n°1676922
adeel-fbf
Posté le 25-01-2008 à 18:42:39  profilanswer
 

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

mood
Publicité
Posté le 25-01-2008 à 18:42:39  profilanswer
 

n°1676933
Docteur_Cu​be
Posté le 25-01-2008 à 19:06:08  profilanswer
 

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. ^^.

n°1676941
adeel-fbf
Posté le 25-01-2008 à 19:21:16  profilanswer
 

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.
 

n°1676946
Docteur_Cu​be
Posté le 25-01-2008 à 19:39:32  profilanswer
 

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.  

n°1676982
Trap D
Posté le 25-01-2008 à 22:12:48  profilanswer
 

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

n°1678678
tsunade sa​ma
BE AWAKED !!
Posté le 29-01-2008 à 17:52:36  profilanswer
 

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;

n°1678680
tsunade sa​ma
BE AWAKED !!
Posté le 29-01-2008 à 17:54:35  profilanswer
 

Citation :

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

n°1678722
Joel F
Real men use unique_ptr
Posté le 29-01-2008 à 19:21:57  profilanswer
 

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à ?

n°1700252
alien cons​piracy
hardtrance addict
Posté le 10-03-2008 à 22:58:31  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Debutant en C : petit problème^^

 

Sujets relatifs
Problème pour adapter la taille d'une image à la cellule d'un tableau[RESOLU]Probleme avec Formulaire et BD MySQL
probleme de malloc ou de scanf ?[PHP] Problème avec exec() dont ret_val = -1
Problème validation W3C: "there is no attribute "style""Projet débutant en C++
[Script Shell] Problème pour exécuter des commandes[FPDF] Probléme affichage PDF sous IE
Player mp3 en flash problème help !Probleme de malloc sur un tableau de pointeur.
Plus de sujets relatifs à : Debutant en C : petit problème^^


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR