Création de calculatrice simple [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
mercredi 16 novembre 2016
Statut
Membre
Dernière intervention
7 janvier 2017
-
Messages postés
5460
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
20 janvier 2021
-
Bonjour,

j'ai crée ce qui est censé être une calculatrice simple (avec les 4 opérations de base) mais qui ne l'est pas et je comprend pas pourquoi...(je suis juste un débutant).
Voici mon code:

#include <stdio.h>
#include <stdlib.h>

void main()
{
int a,b;
char operateur;
int choix;

do {

    printf("1.entrer une expression\n");
    printf("2.quitter\n");
    scanf("%d", choix);

    if(choix == 1)
    {
    scanf("%d%c%d",&a,&operateur,&b);

    switch(operateur)
        {
            case '+' : printf("%d + %d = %d",a,b,a+b);
            break;
            case '-' : printf("%d - %d = %d",a,b,a-b);
            break;
            case '*' : printf("%d * %d = %d",a,b,a*b);
            break;
            case '/' :
            if ( b == 0)
                {
                    printf(" division par zero impossible\n");
                }
            else
                {
                    printf("%d / %d = %d",a,b,a/b);
                }
            break;
            default : printf(" operateur non accepte\n");
            break;
            system("pause");
        }
    }
    if(choix == 2)
    {
        system("cls\n");
    }
    }while (choix != 2);
}


quand je lance le programme, il n'y a aucun problème. Mais quand je prend un des deux choix (donc 1 ou 2) le programme se casse la figure et une fenêtre disant que le compilateur a cessé de fonctionner apparaît.
Donc je cherche l’erreur et l’éventuelle correction,

merci.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


1 réponse

Messages postés
5460
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
20 janvier 2021
923
Salut Zexen,

En compilant ton code avec les Warnings, le compilateur, bien qu'il accepte de produire un exécutable, te signale un certain nombre de problèmes :

$ gcc -Wall zexen.c
zexen.c:4:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
void main()
^
zexen.c: In function ‘main’:
zexen.c:14:3: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d", choix);
^
zexen.c:14:3: warning: ‘choix’ is used uninitialized in this function [-Wuninitialized]

En C, tu dois toujours compiler avec les warnings, et il ne faut jamais les ignorer, mais, au contraire, essayer de comprendre pourquoi ils se manifestent et corriger le code pour les éliminer tous. Les warnings te signalent dans 90% des cas des erreurs, ou des choses qui vont, tôt ou tard provoquer des erreurs.


Dal
Messages postés
11
Date d'inscription
mercredi 16 novembre 2016
Statut
Membre
Dernière intervention
7 janvier 2017

je vais voir ça , merci!
Messages postés
5460
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
20 janvier 2021
923
Pas de pb. Si tu ne comprends pas certains avertissements, après avoir cherché par toi-même, pose la question ici.

Corriger ces warnings devrait éliminer la source du plantage, qui est une corruption de la mémoire.

Ce ne sont pas les seuls problèmes dans ton code, mais cela tu t'en apercevra en compilant et en testant son fonctionnement :-)