Signaler

Création de calculatrice simple [Résolu]

Posez votre question Zexen 11Messages postés mercredi 16 novembre 2016Date d'inscription 7 janvier 2017 Dernière intervention - Dernière réponse le 18 nov. 2016 à 11:08 par [Dal]
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.


Afficher la suite 
Utile
+0
plus moins
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
Zexen 11Messages postés mercredi 16 novembre 2016Date d'inscription 7 janvier 2017 Dernière intervention - 18 nov. 2016 à 10:56
je vais voir ça , merci!
Répondre
[Dal] 4193Messages postés mercredi 15 septembre 2004Date d'inscription ContributeurStatut 24 mars 2017 Dernière intervention - 18 nov. 2016 à 11:08
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 :-)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !