Partage
  • Partager sur Facebook
  • Partager sur Twitter

[c] débute, problème code!

probleme de division!

Sujet résolu
    15 avril 2006 à 12:30:05

    bonjour tout le monde, je me suis mi a programme(enfin apprendre!) depuis 2 jours, et la j'ai un probleme
    avec les divisions!!
    voici mon code:
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    printf("bonjour!\n\n");
    printf("voici mon tout premier programme!!ne vous inquieter pas ce n'est que le debut!\n\n\n");
    printf("addition: \n\n\n");
    long x = 0, y = 0, resultat = 0;
    printf("taper votre premier nombre et appuyer sur 'entrer': "); scanf("%ld", &x);
    printf(" + \n");
    printf("taper votre deuxieme nombre puis taper sur 'entrer': "); scanf("%ld", &y);
    resultat = x + y;
    printf("%ld + %ld = %ld\n\n", x, y, resultat);
    printf("le resultat est donc %ld\n\n", resultat);
    printf("maintenant passont a la division: \n\n\n");
    double a = 0, b = 0, result = 0;
    printf("taper votre premier nombre puis appuyer sur 'entrer': "); scanf("%lf", &a);
    printf(" / \n");
    printf("taper votre deuxieme nombre puis appuyer sur 'entrer': "); scanf("%lf", &b);
    resultat = a / b;
    printf("%lf / %lf = %lf\n\n\n", a, b, result);
    printf("le resultat est donc %lf\n\n\n", result);
    system("PAUSE");
    return 0;
    }

    voila!! au moment du "double", il ne calcul pas correctement!! je pense qu'il faut mettre "a" et "b" et nombre décimaux, mais je ne sais pas comment faire!!
    si vous pouviez m'aider!!
    merci et bonne journée a tous! :p
    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2006 à 12:31:15

      utilise la balise de code C, ce sera beaucoup plus lisible !
      • Partager sur Facebook
      • Partager sur Twitter
        15 avril 2006 à 12:33:04

        Oui, et ne faudrait-il pas initialiser les variables au début de la fonction ?
        • Partager sur Facebook
        • Partager sur Twitter
          15 avril 2006 à 12:38:04

          bonjour,
          comme je vous l'ai dit, je suis nouveau, donc je ne comprend pas très bien ce que vous me dite!!
          normalement, les variables je les aient initialisées:
          double a = 0, b = 0, result = 0;
          voila je pense que c'est sa!!
          et je ne vois pas ce que c'est la balise du code C!!!
          ps: déslé pour les fautes d'orthographe!!
          • Partager sur Facebook
          • Partager sur Twitter
            15 avril 2006 à 12:41:37

            Je pense que tu es nouveau sur le forum, mais pas en France, donc écrit bien s'il te plaît.

            Tu dois initialiser TOUTES tes variables (long variable = 1; char var2 = 'A'; etc) juste après le "{" de la fonction main.

            Sinon quand tu écris du code, encadre le des balises <coode type="c"></coode>, en ne mettant bien sûr qu'un seul "o" à code :)
            • Partager sur Facebook
            • Partager sur Twitter
              15 avril 2006 à 12:43:07

              Ce sera pas mal si tu met ton code en couleur, pour ce faire c'est pas compliqué quand tu écrit un message ben tu a tout plein de fonction au dessus de la zone de saisi du message, donc tu a juste a cliquer sur le menu déroulant code et a choisi C et tu mets ton code entre les balise. Ensuite déclare tes variables au début du programme, c'est plus claire et tu peut voir d'un seul coup d'oeil sil une variable n'est aps initialiser plutot que cherche pendant 10 ans dans le code.

              [edit] Ton code ne marche pas parce que pour la division tu as mit
              resultat = a /b ;

              alors que resultat est de type long donc pour l'afficher faut que tu mette %ld, mais comme tu a déclaré une vairable result ben utilise la donc tu remplace la ligne par
              result = a / b;


              • Partager sur Facebook
              • Partager sur Twitter
                15 avril 2006 à 12:58:36

                Citation : drak0n!1


                bonjour tout le monde, je me suis mi a programme(enfin apprendre!) depuis 2 jours, et la j'ai un probleme
                avec les divisions!!


                • Merci de lire les regles du forum et de placer les balises de code autour de ton code.
                • C'est du massif ! Du costaud ! Au moins, ça compile...
                • L'addition est correcte. (On peut discuter sur les fonctions de saisie...)
                • La division est correcte, mais tu as fait une erreur (copié/collé, probablement) qui fait que tu confonds resultat et result. Le type est donc incorrect.

                Après correction :

                bonjour!

                voici mon tout premier programme!!ne vous inquieter pas ce n'est que le debut!


                addition:


                taper votre premier nombre et appuyer sur 'entrer': 12
                +
                taper votre deuxieme nombre puis taper sur 'entrer': 34
                12 + 34 = 46

                le resultat est donc 46

                maintenant passont a la division:


                taper votre premier nombre puis appuyer sur 'entrer': 12
                /
                taper votre deuxieme nombre puis appuyer sur 'entrer': 34
                12.000000 / 34.000000 = 0.352941


                le resultat est donc 0.352941


                Nota : En C90, on a pas le droit de définir une variable ailleurs qu'au début d'un bloc. Si j'applique ce principe à ton code, j'obtiens ceci :

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

                int main(int argc, char *argv[])
                {
                   printf("bonjour!\n\n");
                   printf("voici mon tout premier programme!!ne vous inquieter pas ce n'est que le debut!\n\n\n");
                   printf("addition: \n\n\n");

                   {
                      long x = 0, y = 0, resultat = 0;

                      printf("taper votre premier nombre et appuyer sur 'entrer': ");
                      scanf("%ld", &x);
                      printf(" + \n");
                      printf("taper votre deuxieme nombre puis taper sur 'entrer': ");
                      scanf("%ld", &y);
                      resultat = x + y;
                      printf("%ld + %ld = %ld\n\n", x, y, resultat);
                      printf("le resultat est donc %ld\n\n", resultat);
                      printf("maintenant passont a la division: \n\n\n");
                   }

                   {
                      double a = 0, b = 0, resultat = 0;
                      printf("taper votre premier nombre puis appuyer sur 'entrer': ");
                      scanf("%lf", &a);
                      printf(" / \n");
                      printf("taper votre deuxieme nombre puis appuyer sur 'entrer': ");
                      scanf("%lf", &b);
                      resultat = a / b;
                      printf("%lf / %lf = %lf\n\n\n", a, b, resultat);
                      printf("le resultat est donc %lf\n\n\n", resultat);
                   }
                   return 0;
                }

                et là, comme par miracle, les variables resultat étant différentes, plus de problèmes... Je recommande cette pratique.

                Concernant les saisies, ce code est instable (tape a pour voir).

                bonjour!

                voici mon tout premier programme!!ne vous inquieter pas ce n'est que le debut!


                addition:


                taper votre premier nombre et appuyer sur 'entrer': a
                +
                taper votre deuxieme nombre puis taper sur 'entrer': 0 + 0 = 0

                le resultat est donc 0

                maintenant passont a la division:


                taper votre premier nombre puis appuyer sur 'entrer': /
                taper votre deuxieme nombre puis appuyer sur 'entrer': 0.000000 / 0.000000 = -1.#IND00


                le resultat est donc -1.#IND00



                C'est dû à une mauvaise utilisation de scanf(). C'est une fonction difficile qui n'est pas recommandée aux débutants. Je conseille fgets() + sscanf() ou strtol() ou strtod() etc. Le mieux est de regler définitivement le problème en construisant ses propes fonctions de saisies avec ces fonctions.

                http://mapage.noos.fr/emdel/notes.htm#saisie
                http://mapage.noos.fr/emdel/notes.htm#fichiers
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  15 avril 2006 à 13:09:08

                  merci à tous,
                  j'ai compris mes erreurs, j'ai une faute de copier coller!!
                  bonne journée a tous et bonne programmation!
                  :p
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [c] débute, problème code!

                  × 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