Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Un programme à la con ...

Probleme de declaration de variable.

Sujet résolu
    18 décembre 2005 à 18:19:24

    bien le bonjour(soir)

    voila j'me suis mis au cours de c++ au fur et a mesur que ça avance. je capte tous sauf la declaration des variables (c'est quand meme con de pas comprendre ça ^^)

    j'ai essayer de fair un petit programme qui calcule l'hypotenuse par rapport au deux autre cotes d'un cercle (me reste pas grand chose de mes cours de math ^^)

    je rapelle pas pythagore, tous le monde connais :D

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

    int main(int argc, char *argv[])
    {
      long cotesA = 0; // On initialise la variable à 0
      long cotesB = 0; // On initialise la variable à 0
      float carreA = 0; // On initialise la variable à 0
      float carreB = 0; // On initialise la variable à 0
      float result = 0; // On initialise la variable à 0
       
      printf("Entrez la longueur d'un cotes \n");
      scanf("%ld", &cotesA);
      printf("Entrez la longueur d'un autre cotes \n");
      scanf("%ld", &cotesB);
     
      printf("\n\n");
     
      carreA = cotesA * cotesA;
      carreB = cotesB * cotesB;
     
      result = sqrt (carreA + carreB);
     
      printf("%lf \n\n", result);
     
     
     
      system("PAUSE");     
      return 0;
    }


    mon probleme c'est que je comprend pas quoi mettre quand je declare les variables. Je voudrais pouvoir taper des chiffres entiers OU des chiffres decimal, et que le resultat s'affiche soit entier soit decimal. En php c'est super simple mais en C++ ...

    j'ai essayer plusieur truc et c'est le meilleur resultat que j'ai reussi a produire. Le programme deconne quand on lui entre une variable decimal.

    Si qq'un a une solution sa serais sympa. Je precise que c'est juste un essai je compte pas realiser un guide de pytagore sur cd rom lol.

    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2005 à 18:42:35

      Bonjour,
      essaye de remplacer

        long cotesA = 0; // On initialise la variable à 0
        long cotesB = 0; // On initialise la variable à 0
        float carreA = 0; // On initialise la variable à 0
        float carreB = 0; // On initialise la variable à 0
        float result = 0; // On initialise la variable à 0


      par

      double cotesA, cotesB, carreA, carreB, result;


      et de remplacer tes %ld (dans les scanf) par des %lf ;)

      Tu peux aussi faire en sorte que l'utilisateur ne puisse pas entrer de valeurs négatives (bien que comme elles sont élevées au carré, ca ne change rien)

      Citation : KoRnKiller

      j'ai essayer de fair un petit programme qui calcule l'hypotenuse par rapport au deux autre cotes d'un cercle (me reste pas grand chose de mes cours de math ^^)



      C'est pas les côtés d'un cercle, c'est les côtés d'un triangle rectangle.
      • Partager sur Facebook
      • Partager sur Twitter
        18 décembre 2005 à 18:52:08

        Salut,
        Il suffit de definir les variables des cotés que tu demande en float, comme ceci :

        long cotesA = 0.0; // On initialise la variable à 0.0 (c'est un float)
        long cotesB = 0.0; // Idem
        float carreA = 0.0; // Idem
        float carreB = 0.0; // Idem
        float result = 0.0; // Idem

        Sinon, si tu code en C++, utilise std::cout pour afficher du texte a la place de printf(), std::cin a la place de scanf().
        Voila le code entier en C++ pour t'aider ^^ :

        // On doit inclure iostream pour pouvoir utiliser std::cout et std::cin
        #include <iostream>
        #include <math.h>

        // Pour ne pas avoir a ecrire a chaque fois std:: devant cout et cin
        using namespace std;

        int main(int argc, char *argv[])
        {
          float cotesA = 0.0; // On initialise la variable à 0.0
          float cotesB = 0.0; // Idem
          float carreA = 0.0; // Idem
          float carreB = 0.0; // Idem
          float result = 0.0; // Idem
           
          cout << "Entrez la longueur d'un cotes\n";
          // On peut entrer soit un float soit un entier
          cin >> cotesA;
          cout << "Entrez la longueur d'un autre cotes\n";
          // Idem
          cin >> cotesB;

          cout << "\n";
         
          carreA = cotesA * cotesA;
          carreB = cotesB * cotesB;
         
          result = sqrt(carreA + carreB);
         
          cout << result << "\n\n";
         
          system("PAUSE");     
          return 0;
        }

        Dis toujours si tu comprend pas :)
        • Partager sur Facebook
        • Partager sur Twitter
          18 décembre 2005 à 18:57:51

          pour printf et scanf ct dans les cours de m@teo
          bon j'vais essayer vos suggestion.

          merci

          edit :
          #include <stdio.h>
          #include <stdlib.h>
          #include <math.h>

          int main(int argc, char *argv[])
          {
           double cotesA, cotesB, carreA, carreB, result;
             
            printf("Entrez la longueur d'un cotes \n");
            scanf("%lf", &cotesA);
            printf("Entrez la longueur d'un autre cotes \n");
            scanf("%lf", &cotesB);
           
            printf("\n\n");
           
            carreA = cotesA * cotesA;
            carreB = cotesB * cotesB;
           
            result = sqrt (carreA + carreB);
           
            printf("%lf \n\n", result);
           
           
           
            system("PAUSE");     
            return 0;
          }


          voila je tape ça et sa marche
          bon je vais regarder c'est quoi ce double mais j'imagine que ça veut dir decimal et entier ....


          merci encore
          • Partager sur Facebook
          • Partager sur Twitter
            18 décembre 2005 à 19:39:29

            Citation : Mateo

            Nom du type Nombres stockables
            char -128 à 127
            int -2 147 483 648 à 2 147 483 647
            long -2 147 483 648 à 2 147 483 647
            float 3.4 x 10 puissance -38 à 3.4 x 10 puissance 38
            double 1.7 x 10 puissance -308 à 1.7 x 10 puissance 308



            double c'est comme float en plus grand si tu veux
            • Partager sur Facebook
            • Partager sur Twitter
              19 décembre 2005 à 20:21:58

              j'ai vu apres avoir repondu ^^
              mais merci pour l'info :-°
              • Partager sur Facebook
              • Partager sur Twitter
                19 décembre 2005 à 20:54:21

                KornKiller >

                Citation : Concernant le C++

                printf() doit être considéré comme obsolète en c++. Elle n'assure pas le contrôle du type et ne gère pas les classes définis par l'utilisateur.


                cin permet plus de chose comparer a scanf(), qui lui-même provoque beaucoup de problème (& oublier, etc).

                Les cours sont rédiger en C, mais sont valables pour les 2 langagues, sauf qu'en C++, cout et cin doivent être utilisé a la place de printf() et scanf().
                • Partager sur Facebook
                • Partager sur Twitter
                  20 décembre 2005 à 19:29:33

                  bas c'est comme pour les cours php ..

                  faudrais que m@teo le signal lol
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [C] Un programme à la con ...

                  × 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