Probleme calculatrice c++

Fermé
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 - 17 juin 2011 à 14:12
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 - 24 juin 2011 à 09:38
Bonjour, a tous je me suis lancer dans la programmation en c++ avec un livre j'ai fait le 1er chapitre qui m'apprener a faire un jeux en utilisante les boucle les variable j'ai reussi a faire le jeux et a le comprendre j'ai voulut donc essayer de faire une calculatrice mais j'y arrive pas voila mon code source :

#include <iostream>
using namespace std;

void main (void)
{
int a,b,c,p,m,mu,d;

cout << " Bienvenue ! "
<< " Veuillez choisir le signe de l'operation (plus(p);moins(m);multiplier(mu);diviser(d)) "
<< endl;
cin >> c;

if (c == p)
{
cout << "Veulliez choisir le chiffre a et le chiffre b" << endl;
cin >> a
>> b;

cout << "Le resultat est : " << a+b << endl;
}
if (c == m)
{
cout << "Veulliez choisir le chiffre a et le chiffre b" << endl;
cin >> a
>> b;

cout << " Le resulat est : " << a-b << endl;
}
if (c == mu)
{
cout << " Veulliez choisir le chiffre a et le chiffre b " << endl;
cin >> a
>> b;

cout << " Le resultat est : " << a*b << endl;
}
if (c == d)
{
cout << " Veulliez choisir le chiffre a et le chiffre b " << endl;
cin >> a
>> b;

cout << " Le resultat est : " << a/b << endl;
}
}




A voir également:

4 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié par KX le 17/06/2011 à 14:23
Lorsque tu fais if (c==p) par exemple, en fait c'est (c=="p") qu'il faut mettre.
Du coup les variables p, m, mu, et d ne servent à rien.

De plus c est déclaré comme de type int, il est évident que ce sera un string !
Il te manquera plus que #include <string> à mettre et ça marchera...

Remarque : normalement la méthode main renvoie un int (0 en cas de succès)
La confiance n'exclut pas le contrôle
1
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
17 juin 2011 à 14:24
je vais essayer ce que tu ma dit
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
17 juin 2011 à 14:27
le nouveau code source mais sa marche toujours pas :

#include <iostream>
using namespace std;
#include <string>

void main (void)
{
int a,b,c,p,m,mu,d;

cout << " Bienvenue ! "
<< " Veuillez choisir le signe de l'operation (plus(p);moins(m);multiplier(mu);diviser(d)) "
<< endl;
cin >> c;

if (c=="p")
{
cout << "Veulliez choisir le chiffre a et le chiffre b" << endl;
cin >> a
>> b;

cout << "Le resultat est : " << a+b << endl;
}
if (c=="m")
{
cout << "Veulliez choisir le chiffre a et le chiffre b" << endl;
cin >> a
>> b;

cout << " Le resulat est : " << a-b << endl;
}
if (c=="mu")
{
cout << " Veulliez choisir le chiffre a et le chiffre b " << endl;
cin >> a
>> b;

cout << " Le resultat est : " << a*b << endl;
}
if (c=="d")
{
cout << " Veulliez choisir le chiffre a et le chiffre b " << endl;
cin >> a
>> b;

cout << " Le resultat est : " << a/b << endl;
}
}
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 juin 2011 à 14:27
Remarque : Comme tu as toujours besoin de a et b, tu peux faire cin >> a >> b, une fois pour toutes avant tous les if, et de même calculer le résultat dans chaque if, mais ne faire l'affichage qu'à la fin.

Ça évite les copier-coller, et simplifie le programme
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 juin 2011 à 14:29
Je t'ai donné 4 modifications à effectuer et tu n'as fait que la première... continue !
0
dna.factory Messages postés 25352 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 15 novembre 2024 1 613
Modifié par dna.factory le 17/06/2011 à 14:42
oh la...
j'ai les yeux qui saignent...
avant même de savoir si le code fonctionne ou pas...

il faut commencer par revoir l'algo...

il faut saisir les chiffres avant de saisir l'opérateur.
il faut utiliser un case pour les opérations et non 4 si,
il faut utiliser une seule ligne d'affichage

et tu saisies un caractere.. pardon une chaine (pour le mu) dans un int...
donc c'est sur de pas marcher...

au passage, utilises des variables réprésentative dans ton code..
et un peu de controle de saise ne serait pas de trop (entre autre pour la division par zéro)

bref : 1/10, pour les impulsions électrique...



Stop failing the turing test !
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
17 juin 2011 à 14:55
je début c'est normal que je fasse des erreurs
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
17 juin 2011 à 15:05
je sais pas pour quoi le virtual c++ bug il veux plus ce lancer bien
0
dna.factory Messages postés 25352 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 15 novembre 2024 1 613
17 juin 2011 à 15:25
en fait, le problème ici n'est pas au niveau du langage C++ (l'histoire des int/char est pas si terrible comme erreur)
le problème est niveau de la façon de penser...
c'est quelque chose que tu n'apprendras ni dans les livres, ni dans les sites internet.

que tu ne connaisse pas encore les case, les whiles pour faire la vérif, ok.

par contre, afficher une seule fois la ligne de saisie et une seule fois la ligne d'affichage, c'est la base, c'est pour ça que tu fais un programme.
Si tu ne commence pas à réfléchir à ça dès le début, tu ne seras qu'un codeur, et pas un programmeur, et quand tes programmes commenceront à etre vraiment complexe, tu n'arriveras plus à rien.
0
dna.factory Messages postés 25352 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 15 novembre 2024 1 613
17 juin 2011 à 15:28
"je sais pas pour quoi le virtual c++ bug il veux plus ce lancer bien"
pas grave, fais ce qu'on t'a dis sur papier, on sera capable de te dire si c'est bon ou pas...
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
17 juin 2011 à 16:41
#include <iostream>
using namespace std;
#include <string>

void main (void)
{
int a,b,c;

cout << " Bienvenue ! " << " Veuillez choisir le signe de l'operation (plus(p);moins(m);multiplier(mu);diviser(d)) " << endl;
cin >> c;

if (c=="p")

cout << "Veulliez choisir le chiffre a et le chiffre b" << endl;
cin >> a >> b;

cout << "Le resultat est : " << a+b << endl;

if (c=="m")

cout << "Veulliez choisir le chiffre a et le chiffre b" << endl;
cin >> a >> b;

cout << " Le resulat est : " << a-b << endl;

if (c=="mu")

cout << " Veulliez choisir le chiffre a et le chiffre b " << endl;
cin >> a >> b;

cout << " Le resultat est : " << a*b << endl;

if (c=="d")

cout << " Veulliez choisir le chiffre a et le chiffre b " << endl;
cin >> a >> b;

cout << " Le resultat est : " << a/b << endl;

}



Le nouveau code mais j'ai des erreur par rapport au ==
0
Wakyo Messages postés 42 Date d'inscription vendredi 17 juin 2011 Statut Membre Dernière intervention 10 avril 2013 1
17 juin 2011 à 17:02
#include <iostream>
#include <cstring> ou #include <string> // J'ai un doute
using namespace std;

void main
{
int a,b, res;
string rep;

cout << " Bienvenue ! "
<< " Veuillez choisir le signe de l'operation (plus(p);moins(m);multiplier(mu);diviser(d)) "
<< endl;
cin >> rep;
cout<<"Veuillez choisir vos deux entiers a et b"<<endl;

if (rep=="p")
res=a+b;

if (rep=="m")
res=a-b;

if (c=="mu")
res=a*b;

if (c=="d")
res=a/b;

cout<<"Le resultat est "<<res<<endl;
}
0
Wakyo Messages postés 42 Date d'inscription vendredi 17 juin 2011 Statut Membre Dernière intervention 10 avril 2013 1
17 juin 2011 à 17:03
Ca devrait fonctionner, après pour rendre le code plus "propre", tu peux faire un switch () case ...
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 juin 2011 à 17:03
Franchement, ça aussi on sait faire... mais quel intérêt dans l'apprentissage ?
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
17 juin 2011 à 17:03
merci mais tu peux me dire a quoi sert string stp
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 juin 2011 à 17:04
Et c'est #include <string> car <cstring> manipule les char* en C
0
dna.factory Messages postés 25352 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 15 novembre 2024 1 613
Modifié par dna.factory le 17/06/2011 à 17:14
mes souvenirs de c++ sont vieux (10 ans), mais il manque pas l'affectation de Valeur1 et Valeur2... pardon a et b ?
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
21 juin 2011 à 17:51
voici le nouveau code il me manquerai un truc pour que ce soit parfait c'est que quand sa recommence que la console ce vide...

#include <iostream>
using namespace std;
#include <string>

void main (void)
{


while(true)
{


int a,b,res;
string rep;

cout << " Bienvenue ! " << " Veuillez choisir le signe de l'operation (+;-;*;/) " << endl;
cin >> rep;
if ((rep=="/")||(rep=="*")||(rep=="-")||(rep=="+")) // si les signe sont bon il continue le programme
{
cout << "Veulliez choisir a et b : " << endl;
cout << "a= ";
cin >> a;
cout << "b= ";
cin >> b;

if (rep=="+")

res = a + b;

if (rep=="-")

res = a - b;

if (rep=="*")

res = a * b;

if (rep=="/")

{if (b!=0)
{res = a / b;
cout << " Le resultat est : " << res << endl; // obliger de mettre sa sinon il m'afficher pas le resultat
system("Pause");
}
else
cout << " Erreur on ne peux pas diviser par 0 !!" << endl;
continue;
}


cout << " Le resultat est : " << res << endl;
system("Pause");
}
else
cout << " Vous n'avez pas rentrez (+;-;*;/). Veulliez recommencez !!" <<endl;
continue;
}
}
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
21 juin 2011 à 18:27
Dire que c'est "parfait" est un peu exagéré je trouve ;-)
Pour effacer la console Windows tu peux utiliser system("CLS");
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
21 juin 2011 à 18:37
ben c'est mon programme donc il est parfait pour moi lol ^^
merci pour la commande je vais l'intégrer dans mon programme
0
dna.factory Messages postés 25352 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 15 novembre 2024 1 613
21 juin 2011 à 21:27
ce qui me dérange, c'est l'utilisation du while...
manifestement, tu connais le while vu que tu en utilise un
et tu l'utilise... pour rien (du moins de mon point de vue, si tu veux faire tourner ton programme en boucle, tu dois au moins autoriser une sortie propre, par exemple entrer q en opérateur)...
alors que 6 lignes plus bas tu utilise un if à la place d'un while pour assurer la saisie du bon opérateur (l'idée est de demander la saisie de l'opérateur jusqu'a ce que ça soit bon) avant de continuer le programme.
du coup, tu as moins besoin d'embriquer, et ton programme est plus facile à lire
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
22 juin 2011 à 12:51
sa fait pareil enfin pour moi parce que si le if n'est pas le bon il recommence
0
roroo07 Messages postés 504 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 14 avril 2014 15
22 juin 2011 à 12:53
a oui il y a juste un truc j'arrive pas a mettre un autre variable a "a" et "b" car du coup la variable ne prend pas en compte les grand nombre ni les virgule donc j'aurai voulut mettre double mais quand je lance le debug il me dit que je peux pas
0