Comment faire une chaîne d'opérations

GgManasse -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

Bonjour Tout le monde, ma préoccupation est de Comment faire une chaîne d'opérations svp merci

Android / Chrome 106.0.0.0

A voir également:

21 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 

Tu n'as pas dû tester très en profondeur.

Voilà deux exemples tirés de mes deux premier tests.

(12 + 34) / 2 = 0.1765 selon ton programme au lieu de 23

-----Calcule Normal----


Saisiser un nombre :12
Saisiser un nombre :34

Entrer(1) pour Addition +
Entrer(2) pour Soustraction -
Entrer(3) pour Multiplication *
Entrer(4) pour Division /
Entrer(5) pour la puissance : 1
La somme de 12 + 34 = 46 


------------
Continuer le cacul_(x)
Faire un autre calcule_(O/N)?
Retour a l'acceuil_(A)
x
Operateur : /
Saisir une valeur : 2
0 / 2 = 0.1765
Continuer le cacul_(x)
Faire un autre calcule_(O/N)?
Retour a l'acceuil_(A)
^C

Si je veux faire 12 + 34 + 4 + 5 je peux pas continuer l'opération pour faire la dernière addition.

-----Calcule Normal----


Saisiser un nombre :12
Saisiser un nombre :34

Entrer(1) pour Addition +
Entrer(2) pour Soustraction -
Entrer(3) pour Multiplication *
Entrer(4) pour Division /
Entrer(5) pour la puissance : 1
La somme de 12 + 34 = 46 


------------
Continuer le cacul_(x)
Faire un autre calcule_(O/N)?
Retour a l'acceuil_(A)
x
Operateur : +
Saisir une valeur : 4

---46 + 4 = 50.0000---

---46 + 4 = 50---

Continuer le cacul_(x)
Faire un autre calcule_(O/N)?
Retour a l'acceuil_(A)
x
------Equation du 2nd degre-----
------(aX + bx - c)------

Saisiser les valeurs de a,b et c : 

si je choisis x pour continuer le calcul, le programme affiche "Equation du 2nd degre".

0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 

Aussi, ton programme tel que tu l'as posté sur le forum ne compile pas chez moi. Pour qu'il compile, j'ai dû rectifier toutes les lignes où le contenu des printf entre guillemets était sur plusieurs lignes sans guillemet fermant sur la ligne ouvrante.

Je ne sais pas si cela est dû à un problème de copier-coller sur le forum.

0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105 > [Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention  
 

Par exemple, lignes 96 et 97 du dernier code source que tu as posté.

printf("La division par 0 est 
Implossible!");

Cela ne peut pas compiler. Si on veut mettre un printf trop long sur plusieurs lignes (là ce n'est pas long, mais admettons) il faut écrire l'une de ces deux formes :

/* mettre un antislash en fin de ligne */
printf("La division par 0 est \
        impossible !\n");

/* délimiter chaque ligne avec des guillemets */
printf("La division par 0 est "
        "impossible !\n");

Les deux façons de faire sont équivalentes. Le préprocesseur va considérer traiter cela comme une seule et unique chaîne.

Tu pourrais aussi corriger les nombreuses fautes d'orthographe ou de frappe : "cacul", "calcule", "acceuil", "Implossible", "saisiser", "operateur inconnue" (sic).

Ton code n'implémente pas l'algorithme que j'ai donné et tu n'as tenu compte d'aucune de nos autres observations sauf celle concernant le stockage du résultat.

L'utilisation de goto est en général très mal vue (elle est bannie par certains). Dans de rares cas elle est considérée acceptable si elle simplifie le code C, mais ton code n'est dans aucun de ces cas.

Par exemple :

  • pour sortir d'une double boucle imbriquée
  • ou pour gérer la sortie d'une fonction vers la fin de la fonction centralisant les opérations communes de nettoyage à faire selon les différents cas d'erreurs (fermeture de fichiers, libération de mémoire,etc.)

Revenir sauter en arrière est en général une mauvaise idée.

Tu as un main() qui fait plus de 200 lignes au lieu de le découper en fonctions comme on te l'a dit.

Ton main pourrait faire ceci ce qui permettrait de percevoir immédiatement la structure générale de ton programme :

int main(void) {
        while (true) {
                afficher_menu();
                switch (demander_choix_menu()) {
                        case 1: calculatrice(); break;
                        case 2: equation_second_degre(); break;
                        case 3: programme_ABCD(); break;
                        case 4: return 0; break;
                        default: afficher_erreur_selection_menu(); break;
                };
        }
        return 0;
}

On fait cela sans goto, dont tu n'as pas besoin, et qui rendent ton code confus (on appelle le genre de code que tu écris du "code spaghetti", ou "programmation spaghetti" : https://fr.wikipedia.org/wiki/Programmation_spaghetti comme on te l'a déjà fait remarquer.

0