Probleme calculatrice c++

roroo07 Messages postés 504 Date d'inscription   Statut Membre Dernière intervention   -  
roroo07 Messages postés 504 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   15
 
je vais essayer ce que tu ma dit
0
roroo07 Messages postés 504 Date d'inscription   Statut Membre Dernière intervention   15
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Je t'ai donné 4 modifications à effectuer et tu n'as fait que la première... continue !
0
dna.factory Messages postés 26034 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
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   Statut Membre Dernière intervention   15
 
je début c'est normal que je fasse des erreurs
0
roroo07 Messages postés 504 Date d'inscription   Statut Membre Dernière intervention   15
 
je sais pas pour quoi le virtual c++ bug il veux plus ce lancer bien
0
dna.factory Messages postés 26034 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
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 26034 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
"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   Statut Membre Dernière intervention   15
 
#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   Statut Membre Dernière intervention   1
 
#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   Statut Membre Dernière intervention   1
 
Ca devrait fonctionner, après pour rendre le code plus "propre", tu peux faire un switch () case ...
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Franchement, ça aussi on sait faire... mais quel intérêt dans l'apprentissage ?
0
roroo07 Messages postés 504 Date d'inscription   Statut Membre Dernière intervention   15
 
merci mais tu peux me dire a quoi sert string stp
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Et c'est #include <string> car <cstring> manipule les char* en C
0
dna.factory Messages postés 26034 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
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   Statut Membre Dernière intervention   15
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   15
 
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 26034 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
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   Statut Membre Dernière intervention   15
 
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   Statut Membre Dernière intervention   15
 
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