Partage
  • Partager sur Facebook
  • Partager sur Twitter

Notre cher ami Pythagore

    17 décembre 2005 à 22:09:17

    Alors voilà j'essaye de mettre en programme le théorème de pythagore mais le problème c'est que mes racines ne marchent pas du tout !!
    les racines m'affichent à chaque fois ..: 0,000000
    Pas logique ?? non ?? :(
    Pouvez vous m'aider s'il vous plait :-°
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main(int argc, char *argv[])
    {
        double AC=0, AB = 0, BC =0, carre=0, racine=0, carre1=0, carre2=0;
      printf ("Resolution d'une longueur d'un triangle rectangle\n");
      printf ("Soit un triangle ABC rectangle en A Quel est la longueur que vous cherchez? \n \n 1: AB \n 2: AC \n3: BC \n");
      int inconnu=0;
      scanf("%ld",&inconnu);
      switch (inconnu)
      {
             case 1:
                 
                  printf ("entrez la valeur de AC.");
                  scanf ("%ld", &AC);
                  printf ("entrez la valeur de BC.");
                  scanf ("%ld", &BC);
                  carre1= pow(AC,2);
                  carre2= pow(BC,2);
                  carre= carre1 + carre2;
                  racine = sqrt(carre);
                  printf (" %lf ^2 + %lf ^2 = %lf\n",AC,BC,carre);
                  printf("AB = %lf \n",racine);
                 
                 
                 
                  break;
                 
              case 2:
                       printf ("entrez la valeur de AB.");
                  scanf ("%lf", &AB);
                  printf ("entrez la valeur de BC.");
                  scanf ("%ld", &BC);
                  carre1= pow(AB,2);
                  carre2= pow(BC,2);
                  carre= carre1 + carre2;
                  AB = sqrt(carre);
                 
                           break;
                           
               default :
                       printf("Vous avez fait une mauvaise manipulation!");   
                  }
      system("PAUSE");     
      return 0;
    }



    Merci merci!!!! ^^
    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2005 à 22:43:46

      Hummmm bah met plutot des float pour tes variables et dans tes scanf, des %f et normalement ca rox ;)
      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2005 à 23:01:42

        j'ai suivi tes conseils mais ce ne marche pas ....
        J'ai pourtant remplacé tout les %ld par %lf
        et remplacé les double par les float!!
        Que faire?
        • Partager sur Facebook
        • Partager sur Twitter
          20 décembre 2005 à 19:46:30

          Je reviens ...
          Mais qu'y at -il d'anormal pour que ca ne marche pas ca fait trois jours que je suis dessus ?? merci!!! :)

          #include <stdio.h>
          #include <stdlib.h>
          #include <math.h>
          int main(int argc, char *argv[])
          {
              float AC=0, AB = 0, BC =0, carre=0, racine=0, carre1=0, carre2=0;
            printf ("Resolution d'une longueur d'un triangle rectangle\n");
            printf ("Soit un triangle ABC rectangle en A Quel est la longueur que vous cherchez? \n \n 1: AB \n 2: AC \n3: BC \n");
            long inconnu=0;
            scanf("%ld",&inconnu);
            switch (inconnu)
            {
                   case 1:
                       
                        printf ("entrez la valeur de AC.");
                        scanf ("%lf", &AC);
                        printf ("entrez la valeur de BC.");
                        scanf ("%lf", &BC);
                        carre1= pow(AC,2);
                        carre2= pow(BC,2);
                        carre= carre1 + carre2;
                        racine = sqrt(carre);
                        printf (" %lf ^2 + %lf ^2 = %lf\n",AC,BC,carre);
                        printf("AB = %lf \n",racine);
                       
                       
                       
                        break;
                       
                    case 2:
                             printf ("entrez la valeur de AB.");
                        scanf ("%lf", &AB);
                        printf ("entrez la valeur de BC.");
                        scanf ("%lf", &BC);
                        carre1= pow(AB,2);
                        carre2= pow(BC,2);
                        carre= carre1 + carre2;
                        AB = sqrt(carre);
                       
                                 break;
                                 
                     default :
                             printf("Vous avez fait une mauvaise manipulation!");   
                        }
            system("PAUSE");     
            return 0;
          }


          Merci
          • Partager sur Facebook
          • Partager sur Twitter
            20 décembre 2005 à 19:54:43

            Je suis pas sur, mais, le C tronque non ? Donc, quand tu déclare tes variable au lieu de mettre 0 essais de mettre 0.0...
            • Partager sur Facebook
            • Partager sur Twitter
              20 décembre 2005 à 20:03:46

              voilà ce que ca m'affiche par exemple même en mettant 0.0 partout!

              scanf ("%lf", &BC);

              entrer la valeur de AC: 2
              entrer la valeur de BC:2
              0.000000^2+0.000000^2=0.000000

              • Partager sur Facebook
              • Partager sur Twitter
                20 décembre 2005 à 20:05:39

                Je sais pas vous, mais moi je trouve beaucoup plus pratique d'utiliser "cin >> inconnu;" plutôt que "scanf("%ld",&inconnu);"... Cela évite d'oublier le "&" et de se tromper avec le "%ld" qu'on ne retient pas facilement...

                Même chose pour printf, "cout << "Texte";" est plus pratique !

                Je n'ai pas eu le temps d'éplucher ton script, mais déjà ces changements te permettront peut-être d'éliminer d'éventuelles erreurs...

                D'autre part, "system("PAUSE");" est également déconseillé, bien qu'il ne soit pas source d'erreur...Par ici les explications !

                PS >> ou est passé le case 3 ?
                • Partager sur Facebook
                • Partager sur Twitter
                  20 décembre 2005 à 20:15:00

                  Essaie de remplacer les "float" par des "double".
                  J'ai modifié le code et ça fonctionne :

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

                  int main(int argc, char *argv[])
                  {
                    double AC = 0, AB = 0, BC = 0, carre = 0, racine = 0, carre1 = 0, carre2 = 0;
                   
                    printf ("Resolution d'une longueur d'un triangle rectangle\n");
                    printf ("ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n\n");
                    printf ("Soit un triangle ABC rectangle en A, Quel est la longueur que vous cherchez? \n\n 1: AB \n 2: AC \n 3: Quitter\n");
                    long inconnu=0;
                    scanf("%ld",&inconnu);
                    switch (inconnu)
                    {
                           case 1:
                               
                                printf ("\nEntrez la longueur AC : ");
                                scanf ("%lf", &AC);
                                printf ("Entrez la longueur BC : ");
                                scanf ("%lf", &BC);
                                carre1= AC * AC;
                                carre2= BC * BC;
                                carre = carre1 + carre2;
                                racine = sqrt(carre);
                                printf (" %lf ^2 + %lf ^2 = %lf\n", AC, BC, carre);
                                printf ("AB = %lf \n", racine);
                               
                                break;
                               
                            case 2:
                                printf ("\nEntrez la longueur AB : ");
                                scanf ("%lf", &AB);
                                printf ("Entrez la longueur BC : ");
                                scanf ("%lf", &BC);
                                carre1 = AB * AB;
                                carre2 = BC * BC;
                                carre = carre1 + carre2;
                                AB = racine = sqrt(carre);
                                printf (" %lf ^2 + %lf ^2 = %lf\n", AB, BC, carre);
                                printf ("AC = %lf \n", racine);
                               
                                break;

                             case 3:
                                     break;
                                 
                             default:
                                     printf("Votre choix ne fait pas parti de la liste !\n\n")
                  }
                    system("PAUSE");     
                    return 0;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 décembre 2005 à 20:21:00

                    ok nickel AeTuOq28 Ca marche en effet !!
                    Mais je suis perdu avec ces trucs
                    Pourquoi fallait il mettre un double ???

                    Explique moi un petit peu!!
                    Merci!
                    beaucoup sinon
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 décembre 2005 à 20:23:26

                      Il fallait mettre des doubles car ils permettent de mettre plus de chiffre apré la virgule par rapport a float, et j'avais mème pas vu sa
                      Ton nombre avais tellement de chiffre aprèsla virgule qu'un float ne pouvais pas en contenir autant il fallais donc mettre un double, cette erreur c'est un classique
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 décembre 2005 à 20:25:22

                        Bah justement ! En quoi le fait qu'il y ait plus de chiffres significatifs permet au script de marcher ?! J'avoue que je ne saisis pas le pourquoi du comment là...

                        EDIT >> Tu as édité ton message pendant que je rédigeais le mien, donc je continue : mais pouruqoi un float n'est-il pas suffisant ? J'ai déjà fait des programmes avec des racines carrées de nombres 'float' et tout fonctionnait...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 décembre 2005 à 20:32:50

                          Attend je vais chercher "Le language C : Norme Ansi" c'est marqué dedans (j'éditerai mon message pour dire la raison quand j'aurais trouvé)Généralement je prend ce livre quand j'ai du mal...

                          Voila J'ai trouvé :

                          Citation : Le Language C : Norme ANSI

                          float : un nombre en virgule flottante en simple précision.
                          double : Un nombre en virgule flottante a double précision


                          Ce qu'il dise dans ce livre est inavalable, je pense que simple ou double précision si taille plus grande ou plus petite

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 décembre 2005 à 20:57:14

                            et pour les puissance il faut mettre quoi ??
                            car avec un double et bien 5^2 = 24 ???


                            En fait non le pow marche bien avec un double ! J'avais mis
                            result7= pow(nombre1, nombre2);
                            printf(" %ld ^%ld= %ld\n",nombre1,nombre2,result7);
                            avec result7 double mais nombre1 nombre 2 long!!!!


                            Le C est bien une école de rigueur!!! :p
                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 décembre 2005 à 21:06:05

                              Pour les carré tu fé comme sa :
                              double nombre1 = 0, carre = 0;
                              scanf ("Veuillez entrez un nombre pour calculer son carré", &nombre1);
                              carre = nombre1 * nombre1
                              printf ("%lf² = %lf", nombre1, carre);

                              corrigé moi si je me trompe
                              • Partager sur Facebook
                              • Partager sur Twitter
                                20 décembre 2005 à 21:09:23

                                NOn tu as juste!!!!

                                Thanks
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Notre cher ami Pythagore

                                × 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