Calculatrice

teschan - Modifié le 5 janv. 2024 à 09:20
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 5 janv. 2024 à 12:42

bonjour à tous.Voilà je débute en c++ et j'ai un éxo à faire : prorammer une calculatrice avec : + - / * et qui demande à l'utilisateur de choisir une opération :

#include <iostream>

using namespace std;

int main()
{
float a;
float b;
float multiplication;
float division;
float addition;
float soustraction;
int = 1;
int = 2;
int = 3;
int = 4;
cout<<"veuillez entrer un nombre"<<endl;
cin>>a;
cout<<"veuillez entrer un second nombre"<<endl;
cin>>b;
if(choix = 1)
{
multiplication = a * b;
}
else(choix = 2)
{
division = a / b;
}
else(choix= 3)
{
    addition = a + b;
    }
    else(choix = 4)
}
soustraction = a - b;
}
return 0;


ps : ne m'envoyer pas de réponse sur ma boîte mail car elle est bloquée.merci de me répondre

A voir également:

6 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
5 janv. 2024 à 09:46

Bonjour

  1. Des lignes 13 à 16, ton éditeur de code ne te signale t il pas un problème ?
  2. Et ne t'en signale t il pas d'autre aux lignes 21, 25, 29, et 33?

Si oui, essaye de comprendre les messages d'erreur, si tu n'y arrives pas poste les ici.


0
noriega6666 Messages postés 13 Date d'inscription mardi 26 septembre 2023 Statut Membre Dernière intervention 5 janvier 2024
5 janv. 2024 à 10:14

merci de m'avoir répondu mais je n'ai pas acces a mon éditeur de code il a disparu (si si c'est vrai) donc je ne peux pas voir les erreurs de mon prorramme et malgrés les lignes dont je sais qu'il y a une erreurs,je n'arrive pas à la résoudre,ça me prend la tête.merci de me répondre

0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
5 janv. 2024 à 10:33

Essaye avec un éditeur en ligne alors https://www.qwant.com/?q=c%2B%2B+online&client=brz-brave&t=web


0
noriega6666 Messages postés 13 Date d'inscription mardi 26 septembre 2023 Statut Membre Dernière intervention 5 janvier 2024
5 janv. 2024 à 11:43

merci de m'aider mais votre compilateur ne marche pas bien et je ne comprends pas les messages d'erreurs.merci de me répondre le plus vite :ERROR!
g++ /tmp/c9Xp1TNtyV.cpp
/tmp/c9Xp1TNtyV.cpp: In function 'int main()':
/tmp/c9Xp1TNtyV.cpp:10:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
   10 | int main()
      |         ^~
/tmp/c9Xp1TNtyV.cpp:10:9: note: remove parentheses to default-initialize a variable
   10 | int main()
      |         ^~
      |         --
/tmp/c9Xp1TNtyV.cpp:10:9: note: or replace parentheses with braces to value-initialize a variable
/tmp/c9Xp1TNtyV.cpp:11:1: error: a function-definition is not allowed here before '{' token
   11 | {
      | ^
/tmp/c9Xp1TNtyV.cpp:40:1: error: 'soustraction' was not declared in this scope
   40 | soustraction = a - b;
      | ^~~~~~~~~~~~
/tmp/c9Xp1TNtyV.cpp:40:16: error: 'a' was not declared in this scope
   40 | soustraction = a - b;
      |                ^
/tmp/c9Xp1TNtyV.cpp:40:20: error: 'b' was not declared in this scope
   40 | soustraction = a - b;
      |                    ^
/tmp/c9Xp1TNtyV.cpp: At global scope:
/tmp/c9Xp1TNtyV.cpp:42:1: error: expected unqualified-id before 'return'
   42 | return 0;
      | ^~~~~~
/tmp/c9Xp1TNtyV.cpp:43:5: error: expected unqualified-id before 'return'
   43 |     return 0;
      |     ^~~~~~
/tmp/c9Xp1TNtyV.cpp:44:1: error: expected declaration before '}' token
   44 | }
      | ^

0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
5 janv. 2024 à 12:08

En fait, ça marche bien, ça te dit que rien ne marche dans ton code.

Et, je pense que c'est du aux lignes 13 à 16.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pierr10 Messages postés 11478 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 17 avril 2024 4 856
5 janv. 2024 à 11:46

Bonjour,

1) Merci de vous souvenir que CCM n'est pas là pour résoudre vos exercices. Vous multipliez les demandes de ce genre, et ce n'est plus acceptable.


2) À l'intérieur du même topic, n'intervenez pas sous différents pseudos : teschan et noriega6666 sont la même personne !


3) Dernier point : 

ps : ne m'envoyer pas de réponse sur ma boîte mail car elle est bloquée.merci de me répondre

Les réponses en messagerie privée ou par mail sont interdites sur le forum.


0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 5 janv. 2024 à 12:32

Salut teschan / noriega6666,

j'ai un éxo à faire : prorammer une calculatrice avec : + - / * et qui demande à l'utilisateur de choisir une opération

(...) je n'ai pas acces a mon éditeur de code

N'écris pas une seule ligne de code sans un compilateur et en compilant avec les avertissements activés.

Avec g++ (les options "-Wall -Wextra" sont recommandées, elles affichent des avertissements en plus des erreurs de syntaxe) :

$ g++ -Wall -Wextra 37974683.cpp
37974683.cpp: In function ‘int main()’:
37974683.cpp:13:5: error: expected unqualified-id before ‘=’ token
   13 | int = 1;
      |     ^
37974683.cpp:14:5: error: expected unqualified-id before ‘=’ token
   14 | int = 2;
      |     ^
37974683.cpp:15:5: error: expected unqualified-id before ‘=’ token
   15 | int = 3;
      |     ^
37974683.cpp:16:5: error: expected unqualified-id before ‘=’ token
   16 | int = 4;
      |     ^
37974683.cpp:21:4: error: ‘choix’ was not declared in this scope
   21 | if(choix = 1)
      |    ^~~~~
37974683.cpp:29:1: error: ‘else’ without a previous ‘if’
   29 | else(choix= 3)
      | ^~~~
37974683.cpp:29:6: error: ‘choix’ was not declared in this scope
   29 | else(choix= 3)
      |      ^~~~~
37974683.cpp:33:5: error: ‘else’ without a previous ‘if’
   33 |     else(choix = 4)
      |     ^~~~
37974683.cpp:10:7: warning: unused variable ‘division’ [-Wunused-variable]
   10 | float division;
      |       ^~~~~~~~
37974683.cpp:11:7: warning: unused variable ‘addition’ [-Wunused-variable]
   11 | float addition;
      |       ^~~~~~~~
37974683.cpp:12:7: warning: unused variable ‘soustraction’ [-Wunused-variable]
   12 | float soustraction;
      |       ^~~~~~~~~~~~
37974683.cpp: At global scope:
37974683.cpp:35:1: error: ‘soustraction’ does not name a type
   35 | soustraction = a - b;
      | ^~~~~~~~~~~~
37974683.cpp:36:1: error: expected declaration before ‘}’ token
   36 | }
      | ^
37974683.cpp:37:1: error: expected unqualified-id before ‘return’
   37 | return 0;
      | ^~~~~~

La première erreur de syntaxe te signale que "int = 1;" ne veux rien dire pour le compilateur et te dis qu'il n'y a pas d'identifiant de variable avant le signe =.

Pour les autres erreurs, tu ne déclares pas la variable "choix", l'opérateur de test d'égalité en C++ est == et pas =, quand tu veux faire un else en testant une nouvelle condition, tu dois écrire "else if (condition)" et pas "else (condition)" et ton test de 4 n'ouvre pas une accolade (tu mets ton code entre deux accolades fermantes).

C'est le travail du compilateur que de te signaler ces erreurs, que tu peux corriger facilement au fur et à mesure si tu compiles ton code au fur et à mesure.

En plus des erreurs signalées par le compilateur et des avertissements, tu as des erreurs de logique.

Tu ne demandes à aucun moment à l'utilisateur d'indiquer quelle opération il veut faire sur les opérandes et il n'y a d'ailleurs aucun code pour afficher le résultat calculé non plus.

Alors, avant d'écrire un programme tête baissée, ce que tu dois faire c'est réfléchir à l'algorithme, c'est à dire à la séquence d'opérations logiques nécessaires pour résoudre le problème. Ecris ton algorithme en français. Code ensuite, en procédant pas à pas, en compilant au fur et à mesure et en testant au fur et à mesure que le code fait bien ce que tu veux lui faire faire.

Par exemple :

  • afficher un texte indiquant à l'utilisateur que : pour faire une addition il doit taper 1, pour faire une soustraction il doit taper 2, pour faire une multiplication il doit taper 3, pour faire une division il doit taper 4,
  • demander à l'utilisateur quelle opération il veut faire et stocker l'entier récupéré dans une variable operation
  • demander à l'utilisateur les deux réels constituant la première et deuxième opérande et les mettre dans des variables a et b
  • si operation == 1 afficher a + b
  • sinon, si operation == 2 afficher a - b
  • sinon, si operation == 3 afficher a * b
  • sinon, si operation == 4 : tester d'abord si b == 0.0 et si oui, afficher une erreur (division par zéro impossible), sinon afficher a / b
  • sinon, afficher une erreur (opération invalide)

Oublie ton code actuel et commence par le premier point, compile et exécute. Résous les éventuelles erreurs de compilation et avertissements et quand to programme compile proprement exécute le programme pour le tester. S'il fait ce que tu attends, passe au point suivant. Répète ce cycle de travail jusqu'à ce que tu arrives au dernier point.

Ce que j'ai mis en gras dans mon post, c'est une méthodologie de travail que je te conseille d'adopter et que moi et d'autres intervenants t'ont déjà conseillé d'adopter sur ce forum. Sans elle, comme tu es très débutant et que tu n'as pas encore, visiblement, bien assimilé les bases du langage, tu vas continuer à faire des choses au hasard, approximatives et sans rigueur.

Rends toi service et adopte cette méthode.

0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
5 janv. 2024 à 12:11

Salut [Dal]

nos réponses se sont croisées.

Oui, il y a plein de choses à revoir dans ce code, mais avant la logique, il me semblait nécessaire de résoudre les problèmes de syntaxe ; les int sans variables et les variables qui n'existent pas. 

0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083 > Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024
Modifié le 5 janv. 2024 à 12:58

@Whismeril StatutContributeurSalut Whismeril :-) Je pense que teschan / noriega6666 a un problème méthodologique et qu'une méthode rigoureuse peut l'aider à se rendre compte de ses erreurs sur les bases du langage comme des erreurs de logique et favoriser son apprentissage.

@teschan / noriega6666: si tu utilises https://www.onlinegdb.com/ sélectionne le langage C++ dans la boite défilante "Language" et clique sur la roue dentée puis "Extra Compiler Flags" et mets y : "-Wall -Wextra" (sans les guillemets) et clique sur "Done".

Cela te donnera non seulement les erreurs de syntaxe (error), mais aussi les avertissements (warning) utiles au débogage de ton code.

Parfois le message du compilateur est difficilement compréhensible. Si tu ne comprends pas le message, note tout de même le numéro de la ligne signalée et regarde la ligne de code indiquée par le message du compilateur dans le contexte de ton code (cette ligne et les lignes avant et après cette ligne) pour te rendre compte toi même de ton erreur. Si tu viens d'écrire cette ligne, tu sais quelle est ton intention (déclarer une variable, faire un test, etc.). Regarde ton cours ou ton manuel pour te rappeler comment faire cela, et corrige ton code. Exécute, teste et passe à la suite. En faisant comme cela, cela va finir par rentrer :-)

0