Partage
  • Partager sur Facebook
  • Partager sur Twitter

Voivi ma calculatrice

Bon je c'est pas très original

    4 décembre 2005 à 20:38:24

    Voila aprés avoir lu les cours de mateo j'ai décidé de me lancer dans mon premier vrai programe.
    Et ta fais un hl² ou la prochain counter?

    C'est un preparation, en attendant j'ai fais une petite calculatrice et j'aurai besion de votre aide pour la cutomiser.
    Comment aranger le systeme de calcul pour enlever ces nombre affreux??
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
        system("PAUSE");
      long premier_nombre; //c'est une déclaration des variables
      premier_nombre = 0;
      printf ("Taper un nombre\n");
      scanf("%d" , &premier_nombre);
     
      printf ("Choisissez un calcul (0 => +, 1 => -, 2 => *, 3 => /)\n");
      long calcul; //c'est une déclaration des variables
      calcul = 0;
      scanf("%d" , &calcul);
      if (calcul==0)
      {
      printf ("Vous avez choisi l addition\n");
      long deuxieme_nombre; //c'est une déclaration des variables
      deuxieme_nombre = 0;
     printf ("Taper un autre nombre\n");
      scanf("%d" , &deuxieme_nombre);
      long resultat;
      resultat = premier_nombre + deuxieme_nombre;
      printf ("%d + %d = %d \n" , premier_nombre, deuxieme_nombre, resultat);
    }
    if (calcul==1)
      {
      printf ("Vous avez choisi la soustraction\n");
      long deuxieme_nombre; //c'est une déclaration des variables
      deuxieme_nombre = 0;
     printf ("Taper un autre nombre\n");
      scanf("%d" , &deuxieme_nombre);
      long resultat;
      resultat = premier_nombre - deuxieme_nombre;
      printf ("%d - %d = %d \n" , premier_nombre, deuxieme_nombre, resultat);
    }
    if (calcul==2)
      {
      printf ("Vous avez choisi la multiplication\n");
      long deuxieme_nombre; //c'est une déclaration des variables
      deuxieme_nombre = 0;
     printf ("Taper un autre nombre\n");
      scanf("%d" , &deuxieme_nombre);
      long resultat;
      resultat = premier_nombre * deuxieme_nombre;
      printf ("%d * %d = %d \n" , premier_nombre, deuxieme_nombre, resultat);
    }
    if (calcul==3)
      {
      printf ("Vous avez choisi la division\n");
      long deuxieme_nombre; //c'est une déclaration des variables
      deuxieme_nombre = 0;
     printf ("Taper un autre nombre\n");
      scanf("%d" , &deuxieme_nombre);
      long resultat;
      resultat = premier_nombre / deuxieme_nombre;
      printf ("%d / %d = %d \n" , premier_nombre, deuxieme_nombre, resultat);
    }
      system("PAUSE");
            return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2005 à 21:26:16

      Pas mal :D

      Mais essaye de trouver des solutions pour gere des nombres superieurs a 2^31 - 1 :) (taille maximum d'un long....)

      Une piste :
      Secret (cliquez pour afficher)

      Essaye de "fractionner" ton nombre en plusieurs nombres plus petits :)
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2005 à 21:33:45

        Bon j'ai copié ton programme et j'avoue y avoir beaucoup touché... dsl. Bon je l'ai tapé en C++ parce que j'ai vu que tu a mi Code C++ en haut du programme. Mantenant si tu le veux en C dit le moi.

        #include <cstdlib>
        #include <iostream>

        using namespace std;

        int main()
        {
                  double Result=0;
                  long Calc=1, Nbre;

                  cout << "Taper un nombre: ";
                  cin >> Result;

                  for(;;)
                  {
                          cout << "\n\nChoisissez une operation:\n\n  0. Quit\n  1. +\n  2. -\n  3. *\n  4. /\n\nVotre choix: ";
                          cin >> Calc;

                          if (Calc==0)
                                  return 0;

                          cout << "Puis le terme suivant: ";
                          cin >> Nbre;

                          if (Calc==1)
                          {
                                  cout << "Vous avez choisi l addition";
                                  Result += Nbre;
                          }
                          
                          if (Calc==2)
                          {
                                  cout << "Vous avez choisi la soustraction";
                                  Result -= Nbre;
                          }
                       
                          if (Calc==3)
                          {
                                  cout << "Vous avez choisi la multiplication";
                                  Result *= Nbre;
                          }

                          if (Calc==4)
                          {
                                  cout << "Vous avez choisi la division";
                                  Result /= Nbre;
                          }
                          
                          cout << "\n\nVotre resultat est: " << Result << endl;
                  }

                  return 0;
        }
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2005 à 21:47:06

          le soucis, c'est que moi , ca me donne que des nombre entier ( la valeur de la division est donc fausse)

          déclare plutot tes variables avec "double"

          ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Défi Toulouse: jeux de piste sur Toulouse, en autonomie avec son smartphone

            4 décembre 2005 à 21:51:37

            Merci
            dsl je mettez tromper javais mis un language c++ alors que je faisai du c mais j'ai reussi a modifier et c bien mieux merci beaucoup
            • Partager sur Facebook
            • Partager sur Twitter
              4 décembre 2005 à 21:51:59

              la division est pas fausse, c'est une division euclidienne.
              bien sur, on peux l'obtenir avec un floor() et une division de réels, mais c'est mieux comme ça :)
              • Partager sur Facebook
              • Partager sur Twitter
                4 décembre 2005 à 22:28:25

                Ca dépend car 1/2 vaut alors 0 !

                C'est à lui de voir :D selon l'utilisation de son programme.
                Il peut aussi rajouter division euclidienne ou non :)

                deLux
                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2005 à 13:09:37

                  En tout cas vivement les cours sur la modularité car si vous continuez ainsi vous allez avoir des main monstrueux.

                  Il serait intéressant d'avoir une fonction qui calcule la somme de deux nombres, une autre qui calcule la différence, etc.

                  Ainsi le code est bien plus facilement réutilisation, bien plus facilement débuggable, bien plus facilement maintenable (ca se dit?)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 décembre 2005 à 15:50:59

                    Voila ce que l'on pourrait faire avec les fonctions :

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

                    char calcul;
                    long premierNombre = 0, deuxiemeNombre = 0, resultat = 0;
                     
                    int main(int argc, char *argv[])
                    {
                        printf ("Taper deux nombres :\n");
                        scanf("%d" , &premierNombre);
                        scanf("%d" , &deuxiemeNombre);
                        printf ("Choisissez un calcul :\n");
                        printf("+ => addition, - => soustraction, * => multiplication, / => division)\n");
                        scanf("%s", &calcul);
                       
                        if (calcul == '+') {
                                   addition(premierNombre,deuxiemeNombre);
                        } else if (calcul == '-') {
                                  soustraction(premierNombre,deuxiemeNombre);
                        } else if (calcul == '*') {
                                  multiplication(premierNombre,deuxiemeNombre);
                        } else if (calcul == '/') {
                                  division(premierNombre,deuxiemeNombre);
                        }
                     
                        system("PAUSE");     
                        return 0;
                    } 
                     
                    int addition(premierNombre,deuxiemeNombre)
                    {
                        printf ("Vous avez choisi l'addition\n");
                        resultat = premierNombre + deuxiemeNombre;
                        printf ("%d + %d = %d \n" , premierNombre, deuxiemeNombre, resultat);
                        return 0;
                    }

                    int soustraction(premierNombre,deuxiemeNombre)
                    {
                        printf ("Vous avez choisi la soustraction\n");
                        resultat = premierNombre - deuxiemeNombre;
                        printf ("%d - %d = %d \n" , premierNombre, deuxiemeNombre, resultat);
                        return 0;
                    }

                    int multiplication(premierNombre,deuxiemeNombre)
                    {
                        printf ("Vous avez choisi la multiplication\n");
                        resultat = premierNombre * deuxiemeNombre;
                        printf ("%d * %d = %d \n" , premierNombre, deuxiemeNombre, resultat);
                        return 0;
                    }

                    int division(premierNombre,deuxiemeNombre)
                    {
                        printf ("Vous avez choisi la division\n");
                        resultat = premierNombre / deuxiemeNombre;
                        printf ("%d / %d = %d \n" , premierNombre, deuxiemeNombre, resultat);
                        return 0;
                    }


                    Si jamais vous voyez une erreur ou une amélioration à faire n'hésitez pas ! Je débute !

                    deLux
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 décembre 2005 à 20:34:04

                      Ben oui, déja tes fonctions retournent un entier, mais en fait c'est toujours 0, donc inutile. Pour faire ca, autant utiliser des void. Les fonctions sont alors appellées procédures.

                      Mais mieux : Les fonctions provoquent un affichage du résultat, ce qui correspond peut-être à ce qu'on en attend pour le moment mais rend la fonction complètement non-réutilisable. En effet, il est possible que la fonction soit réutilisée dans un contexte complètement différent, comme une application graphique, ou un système ne disposant pas d'écran.

                      Aussi, et c'est une règle très importante en programmation : les routines annexes ne doivent pas écrire quoi que ce soit, ni à l'écran ni vers un fichier quelconque, excepté si la routine est spécifiquement concue pour.

                      On laissera les affichages à main, ou à des routines spécialisées dans l'affichage.

                      Ici, le projet est simple et donc il n'y a pas 36 façons de "bien" concevoir le programme (quoi que la notion de bien programmer soit subjective) : Il faut que les fonctions prennent des entiers, et sortent un entier, résultat de leurs calculs.

                      Par exemple, addition prendra deux entiers a et b, et sortira a+b :

                      int addition(int a, int b)
                      {
                         return a+b;
                      }


                      Le main n'a plus qu'à appeler ces fonctions, récupérer les valeurs de retour et les afficher. Si d'aventure vous avez besoin dans un autre programme de calculer la somme de deux entiers, vous pourrez récupérer cette fonction et l'utiliser comme brique de base à votre programme. Le but étant de faire des briques si bien conçues qu'il suffit de les combiner pour créer des programmes sofistiqués. Ce n'est pas possible si la fonction fait des affichages un peu partout.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Voivi ma calculatrice

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown