Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programme pour température

Le programme n'est pas précis!

Sujet résolu
    18 décembre 2005 à 14:25:05

    Salut à tous!
    J'aimerai créer un programme qui convertit les degrés farenheit en degré celcius.

    Mais le progrmme n'est pas précis!

    Je lui demande combien font 1 degré celcius et il me répond: 33. alors que c'est 33.8!

    Voici la formule mathématique: Tf = (9 / 5) * Tc + 32
    Et voici le code!

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

    int main(int argc, char *argv[])
    {
     double temperature_c = 0, temperature_f = 0;
     
      printf ("\nInscrivez la temperature en Celcius: ");
      scanf("%lf", &temperature_c);
     
      temperature_f = (9 / 5)  * temperature_c + 32;
     
      printf("\n\nCela fait %lf degres Farenheit.\n", temperature_f );
      system("PAUSE");     
      return 0;
    }


    Merci d'avance :D
    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2005 à 14:28:36

      9/5 == 1 hein
      Une division d'un entier par un autre entier donne un entier. Utilise des flottants.
      • Partager sur Facebook
      • Partager sur Twitter
        18 décembre 2005 à 14:51:03

        Suis-je bête!
        En fait il fallait mettre: temperature_f = (9.0 / 5.0) * temperature_c + 32;

        9.0 et 5.0 !
        Voilà, ça marche avec un double!

        EDIT: J'a une question, comment faire dans un while pour avoir 2 conditions.
        Un truc du genre:

        while (varaible < 1 || variable > 100)

        Car ça marche pas!
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 décembre 2005 à 14:56:12

          variable est pas écrit les deux fois de la même manière
          • Partager sur Facebook
          • Partager sur Twitter
            18 décembre 2005 à 15:02:54

            oui, mais c'est un exemple et je peux très bien avoir une variable qui s'apelle: "variable" et une autre variable qui s'apelle "varaible". ;)
            Mais ça ne change rien au problème. Pourquoi on ne peut pas mettre 2 conditions dans un while?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              18 décembre 2005 à 15:09:56

              biensur que si on peut mettre 2 conditions dans un while, et même 3, 4,.. faut juste bien réflechir pour quelle valeur ta condition va être vraie et pour quelle valeur ta condition va être fausse. attention égalemen aux règles de priorités. Un && et prioritaire sur un || alors si tu utilises les deux ensembles, veille à mettre des parenthèses.
              • Partager sur Facebook
              • Partager sur Twitter
                18 décembre 2005 à 15:13:37

                Ouais, merci!
                Ca marche !
                Mais comment je fais pour qu'une fois le résultat donné je peux aller au premier menu?
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  18 décembre 2005 à 15:16:55

                  retourner a quel premier menu? :s
                  C'est difficile sans le code.

                  Mais sinon en général pour ca on imbrique des boucles les unes dans les autres. et pour quitter une boucle intérieur on fait un 'forcage de boucle'. en obligeant ta variable à avoir une valeur qui ne permet plus au programme de rester dans la boucle.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 décembre 2005 à 15:25:37

                    Lol, j'ai pas très bien compris ton histoire de boucle mais voici le code:

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

                    int main(int argc, char *argv[])
                    {system("color f1");
                        long  convertir = 0;
                     double temperature_c = 0, temperature_f = 0;
                     
                     //menu
                      printf("                === Convertisseur de temperatures ===\n\n");
                       
                        printf("                      === Par The_Greek22 ===\n\n\n");
                       
                       
                       
                       printf("1. Celsius --> Farenheit \n");
                        printf("2. Farenheit --> Celsius \n");
                     
                      printf ("\n\nChoisissez ce que vous voulez convertir: ");
                      scanf ("%ld", &convertir);                //Choix conversion
                     
                      //fin menu
                     
                      //en cas d'erreur
                      while (convertir >2 || convertir <= 0)
                      {
                            printf ("\n\nChoisissez ce que vous voulez convertir: ");
                      scanf ("%ld", &convertir);   
                            }
                      //Celsius --> Farenheit
                      if (convertir == 1)
                      {   
                           printf ("\nInscrivez la temperature en Celcius: ");
                      scanf("%lf", &temperature_c);
                     
                      temperature_f = (9.0 / 5.0) * temperature_c + 32;
                     
                      printf("\n\nCela fait %lf degres Farenheit.\n", temperature_f );
                                    }
                                    //Farenheit --> Celsius
                                    else if (convertir == 2)
                                    {
                                         printf ("\nInscrivez la temperature en Farenheit: ");
                      scanf("%lf", &temperature_f);
                     
                      temperature_c = (temperature_f - 32.0) / (9.0 / 5.0);
                     
                      printf("\n\nCela fait %lf degres Celcius.\n", temperature_c );
                                     }
                                     else
                                     {
                                          printf("\nError !\n");
                                     }
                       
                    //Ici retour au menu
                                   
                       
                      system("PAUSE");     
                      return 0;
                    }
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      18 décembre 2005 à 15:40:56

                      bien, tu met une boucle while (ou do...while) tout au début de ton programme. puis tout à la fin tu demandes si l'utilisateur veut recommencer. (1 pour oui 0 pour non) et tu stocke ce resultat dans la variable condition de ta boucle.

                      exemple


                      int i=1;
                      while(i==1)
                      {
                          ton programme...


                          printf("voulez vous recommencez? 1 pour oui 0 pour non");
                          scanf("%d",&i);
                      }


                      tu peux aussi inclure une boucle qui vérifie si l'utilisateur entre bien un 1 ou un 0.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 décembre 2005 à 15:45:51

                        Donc je met tout le code à la place de "ton..programme" ?

                        EDIT: Ok, j'ai essayer et ça marche:

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

                        int main(int argc, char *argv[])
                        {system("color f1");
                            long  convertir = 0;
                         double temperature_c = 0, temperature_f = 0;
                         int i=1;
                        while(i==1)
                        {
                                   system("CLS");
                            //ton programme...


                         
                         //menu
                          printf("                === Convertisseur de temperatures ===\n\n");
                           
                            printf("                      === Par The_Greek22 ===\n\n\n");
                           
                           
                           
                           printf("1. Celsius --> Farenheit \n");
                            printf("2. Farenheit --> Celsius \n");
                         
                          printf ("\n\nChoisissez ce que vous voulez convertir: ");
                          scanf ("%ld", &convertir);                //Choix conversion
                         
                          //fin menu
                         
                          //en cas d'erreur
                          while (convertir >2 || convertir <= 0)
                          {
                                printf ("\n\nChoisissez ce que vous voulez convertir: ");
                          scanf ("%ld", &convertir);   
                                }
                          //Celsius --> Farenheit
                          if (convertir == 1)
                          {   
                               printf ("\nInscrivez la temperature en Celcius: ");
                          scanf("%lf", &temperature_c);
                         
                          temperature_f = (9.0 / 5.0) * temperature_c + 32;
                         
                          printf("\n\nCela fait %lf degres Farenheit.\n", temperature_f );
                                        }
                                        //Farenheit --> Celsius
                                        else if (convertir == 2)
                                        {
                                             printf ("\nInscrivez la temperature en Farenheit: ");
                          scanf("%lf", &temperature_f);
                         
                          temperature_c = (temperature_f - 32.0) / (9.0 / 5.0);
                         
                          printf("\n\nCela fait %lf degres Celcius.\n", temperature_c );
                                         }
                                         else
                                         {
                                              printf("\nError !\n");
                                         }
                           
                        //Ici retour au menu
                                 
                            printf("\n\nVoulez vous recommencez? 1 pour oui 0 pour non: ");
                            scanf("%d",&i);
                           
                            while (i >2 || i <= 0)
                          {
                                  printf("\n\nVoulez vous recommencez? 1 pour oui 0 pour non: ");
                            scanf("%d",&i);
                                }
                           
                        }     
                           
                          system("PAUSE");     
                          return 0;
                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          18 décembre 2005 à 16:14:18

                          pour l'amelioration de ton programme: ta variable convertir n'a pas besoin d'être en long. un short suffit (idem pour le i).

                          tu peux faire tous tes scanf avant ton if. comme ca tu n'en fais qu un seul. (tu sais si l utilisateur entre une temperature en C ou en F, grace a ta variable convertir. l utilisateur aussi le sait donc t as du texte qui sert a rien :p)

                          dans tes boucles de controle, si tu met exactement le même texte, préfère la boucle do...while.

                          à la place de mettre des 5.0 etc, même si le résultat est le même, préfère le casting: ex: ((float) (9/5))

                          c'est des ptits commentaires comme ca pour améliorer ton code :-). tien en compte ou pas mais t'as l'air de vouloir apprendre alors :-)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 décembre 2005 à 16:23:32

                            Et bien merci!
                            Mais est-ce que ça change vraiment qqch si on met un short à la place d'un long ou pas?

                            Et aussi j'ai pas compris quand tu me dis de mettre les scanf avant le if..

                            Mais merci
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              18 décembre 2005 à 16:34:54

                              tu peux gagner quelque lignes à ton code en faisant ton scanf avant tes if. saisir la temperature a convertir avant de rentrer dans tes if qui vont faire la convertion. mais c'est un détail.

                              pour les long et les short, non ca change pas grand chose mais c'est plus propre. ca sert à rien d utiliser un long alors que ta variable ne va prendre que 2 valeurs différentes. Puis la place en mémoire est différente. C'est rien du tout avec les ordinateurs qu on a, mais bon, c'est plus propre :-)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 décembre 2005 à 16:57:27

                                Bah sa fera economiser 3 ko de RAM a ton Pc ^^

                                C' est non negligeable sur un gros projet car multiplier par le nombre de variable
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  18 décembre 2005 à 17:02:49

                                  pas ko, just o ;) et si mes souvenirs sont bon un short fait 2o et un long 4 ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Programme pour température

                                  × 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