IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Calculatrice en C


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut Calculatrice en C
    Bonsoir je suis Gaëtan, étudiant en informatique et je m'entraîne un peu avant la rentrée.

    J'ai commencer les cours de C. J'ai alors eut envie de créer ma petite calculette. Bien sûr étant débutant la structure n'est certainement pas la meilleure.

    Je n'utilise pas encore les switch...case... que je verrai par la suite.

    Voici mon Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        //Variables
        int choix;
        double Resultat;
        double Nbr1;
        double Nbr2;
        Resultat = 0.0;
        Nbr1 = 0.0;
        Nbr2 = 0.0;
        choix = 0;
        //Page d'acceuil
        printf("-- Calculatrice Par Rouche --\n");
        printf("\n1.Addition\n2.Soustraction\n3.Multiplication\n4.Division\n5.Quitter\n");
        //Demandde de Choix + Fonction opérations
        printf("\nVotre Choix >>>\t");
        scanf("%d", &choix);
        if (choix==1) //j'additione
            {
               printf("\n\tVous avez choisi l'addition.\n");
               printf("\n\t\tPremier Nombre :\t");
               scanf("%d", &Nbr1);
               printf("\n\t\tDeuxieme Nombre :\t");
               scanf("%d", &Nbr2);
               Resultat = (Nbr1)+(Nbr2);
               printf("\n\t\t---------------------------   +");
               printf("\n\t\tResultat = %d\n\n", Resultat);
            }
     
            else if (choix==2) //Je soustrais
                {
                    printf("\n\tVous avez choisi la soustraction.\n");
                    printf("\n\t\tPremier Nombre :\t");
                    scanf("%d", &Nbr1);
                    printf("\n\t\tDeuxieme Nombre :\t");
                    scanf("%d", &Nbr2);
                    Resultat = (Nbr1)-(Nbr2);
                    printf("\n\t\t---------------------------   -");
                    printf("\n\t\tResultat = %d\n\n", Resultat);
                }
            else if (choix==3) //Je Multiplie
                {
                    printf("\n\tVous avez choisi la multiplication.:\n");
                    printf("\n\t\tPremier Nombre :\t");
                    scanf("%d", &Nbr1);
                    printf("\n\t\tDeuxieme Nombre :\t");
                    scanf("%d", &Nbr2);
                    Resultat = (Nbr1)*(Nbr2);
                    printf("\n\t\t---------------------------   *");
                    printf("\n\t\tResultat = %d\n\n", Resultat);
                }
            else if (choix==4) //Je Divise
                {
                    printf("\n\tVous avez chois la division.\n");
                    printf("\n\t\tPremier Nombre :\t");
                    scanf("%d", &Nbr1);
                    printf("\n\t\tDeuxieme Nombre :\t");
                    scanf("%d", &Nbr2);
                    Resultat = (Nbr1)/(Nbr2);
                    printf("\n\t\t---------------------------   :");
                    printf("\n\t\tResultat = %d\n\n", Resultat);
                }
            else if(choix=5) //Quitter
                {
                    return 0;
                }
            else if(choix>5) //Supérieur au choix
                {
                    printf("\n\tError !\n");
                }
        return main();
    }
    Problèmes rencontrés :
    - Je n'arrive pas à faire fonctionner la multiplication et la division. Celles ci me donne une réponse nulle (0).
    - Je n'arrive pas non plus à faire des opérations entre chiffres décimaux.

    Merci de votre aide.

    Cordialement Rouche,

  2. #2
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    - Tu peux définir et initialiser tes variables en une seule fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        int choix = 0;
        double Resultat = 0;
        double Nbr1 = 0;
        double Nbr2 = 0;
    - Pour lire un double via scanf, tu doit utiliser le spécificateur de format %lf.
    - Pour afficher un double via printf, tu doit utiliser le spécificateur de format %f.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            else if(choix=5) //Quitter
    - Une erreur classique à laquelle il faut faire très attention !

    - Il est temps de lire le chapitre des boucles (for, while, do while) .

    Bon courage.

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut Merci
    Merci de ta réponse rapide.

    Cependant je ne comprends pas pourquoi u dis qu'il y a un problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            else if(choix=5) //Quitter
    Le choix quitter me renvoi vers > return 0; (pour arrêter la calculette)
    Et ...
    Après avoir effectuer une opération, la calculette me propose d'en effectuer une autre. Effet souhaité.

    Code après modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        //Variables
        int choix = 0;
        double Resultat = 0;
        double Nbr1 = 0;
        double Nbr2 = 0;
        //Page d'acceuil
        printf("-- Calculatrice Par Rouche --\n");
        printf("\n1.Addition\n2.Soustraction\n3.Multiplication\n4.Division\n5.Quitter\n");
        //Demandde de Choix + Fonction opérations
        printf("\nVotre Choix >>>\t");
        scanf("%d", &choix);
        if (choix==1) //j'additione
            {
               printf("\n\tVous avez choisi l'addition.\n");
               printf("\n\t\tPremier Nombre :\t");
               scanf("%lf", &Nbr1);
               printf("\n\t\tDeuxieme Nombre :\t");
               scanf("%lf", &Nbr2);
               Resultat = (Nbr1)+(Nbr2);
               printf("\n\t\t---------------------------   +");
               printf("\n\t\tResultat = %f\n\n", Resultat);
            }
     
            else if (choix==2) //Je soustrais
                {
                    printf("\n\tVous avez choisi la soustraction.\n");
                    printf("\n\t\tPremier Nombre :\t");
                    scanf("%lf", &Nbr1);
                    printf("\n\t\tDeuxieme Nombre :\t");
                    scanf("%lf", &Nbr2);
                    Resultat = (Nbr1)-(Nbr2);
                    printf("\n\t\t---------------------------   -");
                    printf("\n\t\tResultat = %f\n\n", Resultat);
                }
            else if (choix==3) //Je Multiplie
                {
                    printf("\n\tVous avez choisi la multiplication.:\n");
                    printf("\n\t\tPremier Nombre :\t");
                    scanf("%lf", &Nbr1);
                    printf("\n\t\tDeuxieme Nombre :\t");
                    scanf("%lf", &Nbr2);
                    Resultat = (Nbr1)*(Nbr2);
                    printf("\n\t\t---------------------------   *");
                    printf("\n\t\tResultat = %f\n\n", Resultat);
                }
            else if (choix==4) //Je Divise
                {
                    printf("\n\tVous avez chois la division.\n");
                    printf("\n\t\tPremier Nombre :\t");
                    scanf("%lf", &Nbr1);
                    printf("\n\t\tDeuxieme Nombre :\t");
                    scanf("%lf", &Nbr2);
                    Resultat = (Nbr1)/(Nbr2);
                    printf("\n\t\t---------------------------   :");
                    printf("\n\t\tResultat = %f\n\n", Resultat);
                }
            else if(choix=5) //Quitter
                {
                    return 0;
                }
            else if(choix>5) //Supérieur au choix
                {
                    printf("\n\tError !\n");
                }
        return main();
    }
    Merci

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Par défaut
    @Tes deux questions :

    1) - Règle le niveau d'avertissement de ton compilateur au maximum, il devrait t'avertir de ce genre d'erreur.
    - Regarde attentivement les autres conditions que tu as mises, tu devrais voir la différence.


    2) Le comportement que tu veux est bien celui d'une boucle, mais dans ta façon de faire tu crées une fonction récursive inutilement : Tu vas appeler une nouvelle fois la fonction main(), et donc toutes les variables locales vont de nouveaux être déclarées et empilées dans la mémoire de ton programme, et ainsi de suite jusqu'à ce que tu finisses l'appel d'une fonction. C'est ce qu'on appelle la pile. La pile est à utiliser, mais pas de façon inconsidérée, voilà pourquoi on préférera les structures de boucles plutôt que ta méthode intuitive assez peu compréhensive immédiatement.

    Ta façon de faire, c'est comme si tu achetais un livre, le posais sur la table, le lisais, arrivé à la fin, si tu veux le relire, tu vas acheter le même livre, le poser sur la table, le lire, et arrivé à la fin, si tu ne veux pas le relire, tu le refermes, tu le ranges dans ta bibliothèque, tu refermes le livre restant et tu le ranges aussi dans ta bibliothèque.

    Une boucle te permets d'éviter les premières phases d'achat et d'empilement du même livre : C'est plus économique, et l'informaticien est radin

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut Merci
    Merci de votre Réponse.

    Je n'ai pas encore vu les boucles, j'attaque cette nuit.

    Merci à vous. Je posterai ici le script avec boucle (si j'y arrive...)

    Bonne nuit.

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Par défaut
    pour le
    else if (choix = 5)
    Le probleme est que dans ton if, tu fais une assignation tu dis en gros choix prend la valeur 5, or toi tu veux comparer. Et pour se faire il faut :
    Et comme dis par Jérôme_C pour ne pas quitter l'application il faut faire une boucle ^^

    bonne continuation et apprentissage :]

Discussions similaires

  1. Aide à la réalisation d'une calculatrice en C
    Par Premium dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 17/11/2005, 16h52
  2. [Calculatrice TI82] Réaliser un jeu
    Par Zenol dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 07/11/2005, 18h40
  3. calculatrice operations >a 1 chiffre
    Par xtaze dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/10/2005, 19h33
  4. [Comparaison] : Capacités des calculatrices/ordinateurs
    Par Évariste Galois dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 02/08/2005, 16h06
  5. [AWT] Demande Explications prog calculatrice
    Par smag dans le forum Débuter
    Réponses: 3
    Dernier message: 07/07/2005, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo