Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comportement bizard de la décrémentation ...

Il passe d'un nombre à 0 d'un coup ...

    31 janvier 2006 à 23:45:16

    Bonsoir tout le monde,

    Pour m'exercer, j'ai fais un tout petit programme (débile, mais bon ...), dans lequel il y as une boucle, et dans cette boucle, une décrémentation pour que la boucle ne sois pas infinie. Mais le problème c'est qu'il passe carément du nombre qu'on lui donne à 0 alors que je lui ais demandé de décrémenter de 1 ... donc il fais la boucle qu'une seul fois.

    J'ai cherché, mais je ne vois pas d'où viens l'erreur.
    Voilà le code :

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

    int main(int argc, char *argv[])
    {
      printf("Combien de fois voulez vous faire calculer 2x2 a votre PC ? : ");
      double boucleRestante; // On créé la variable boucleRestante
      scanf("%ld", &boucleRestante); // On demande combien on veut faire de boucle
      char resultat; // On créé la variable résultat
      while (boucleRestante > 0) // Tant qu'il faut faire la boucle, on la fait ...
      {
            resultat=2*2; // On calcule 2x2 ...
            printf("2 x 2 = %ld\n", resultat);
            printf("boucleRestante vaut av decremantation : %ld\n", boucleRestante);
            boucleRestante--; // On décrémente de 1
            printf("Decrementation\nboucleRestante vaut : %ld\n", boucleRestante);
      }
      system("PAUSE");     
      return 0;
    }


    Donc quand on compile et qu'on exécute ça et qu'on lui donne 50 par exemple, ça donne :

    Citation : Programme débile

    Combien de fois voulez vous faire calculer 2x2 a votre PC ? : 50
    2 x 2 = 4
    boucleRestante vaut av decrementation : 50
    Decrementation
    boucleRestante vaut : 0
    Appuyez sur une touche pour continuer...



    Là on vois bien qu'il décrémente de bien plus que d'un en un seul coup ... je comprend pas.
    Ce qui me rasure, c'est que si je bloque avec des trucs aussi simple ...

    Merci d'avance à celui/celle qui trouvera.
    Pierre.
    • Partager sur Facebook
    • Partager sur Twitter
      31 janvier 2006 à 23:49:00

      Oulah, tu déclares la variable bouclerestante en tant que double, puis tu la scannes en tant que long...

      Corrige déjà ça et reteste.
      • Partager sur Facebook
      • Partager sur Twitter
        31 janvier 2006 à 23:51:00

        Bonsoir. Pourquoi ne pas avoir utiliser un for ? Apparemment d'après ce que j'ai compris c'est mieu pour ce genre de situation.
        • Partager sur Facebook
        • Partager sur Twitter
          31 janvier 2006 à 23:53:20

          Il l'a dit lui même, c'est un programme débile (faire calculer 2*2 50 fois, faut pas êter bien dans sa peau >_>) en clair, c'est plus pour tester que pour créer quelque chose qui marche bien.
          • Partager sur Facebook
          • Partager sur Twitter
            1 février 2006 à 0:09:29

            "Oulah, tu déclares la variable bouclerestante en tant que double, puis tu la scannes en tant que long... "
            Ah oui, merci, c'étais ça, je pensais que tan qu'on n'avais pas marqué de chiffre à virgule, on pouvais mettre ld ... mais il la stoque en nombre décimale ...

            "Bonsoir. Pourquoi ne pas avoir utiliser un for ? Apparemment d'après ce que j'ai compris c'est mieu pour ce genre de situation."
            Connais pas encore, j'en suis que dans les début des tutos de Matéo.

            "Il l'a dit lui même, c'est un programme débile (faire calculer 2*2 50 fois, faut pas êter bien dans sa peau >_>)"
            LOL, merci ! Non, mais c'est que je voulais voir combien de temps ça lui prenais pour me calculer ça quelque millions de fois, apparament c'est instantanné jusqu'à 10 millions de fois environ.
            PS : Sinon, je vais très bien ...
            • Partager sur Facebook
            • Partager sur Twitter
              1 février 2006 à 13:34:18

              Citation : Pierre4012

              j'ai fais un tout petit programme (débile, mais bon ...)

              Amnésique et psychopathe >_>
              Mais ce sont les plus timbrés qui s'en sortent le mieux °D (non, non, je vise personne de ma citation...)
              • Partager sur Facebook
              • Partager sur Twitter
                1 février 2006 à 13:51:32

                Donc ça marche maintenant ?
                • Partager sur Facebook
                • Partager sur Twitter
                  1 février 2006 à 13:56:04

                  Oui oui j'ai testé, ça marche. :-)

                  (Euh...on a le droit de tester les programmes des aut' sur not' PC ou pas? Faut le dire hein, comme ça je r'commenc'rai plus. :) (et 'toute manière j'ai supprimé le programme, c't'ait juste pour voir :) ))
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 février 2006 à 22:38:49

                    Oui, ça marche.

                    V1944 : Laisse la programmation, cours faire psychologue ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 février 2006 à 22:57:38

                      Citation : Pierre4012

                      V1944 : Laisse la programmation, cours faire psychologue ...

                      'veulent pas me laisser aller de l'autre côté du bureau >_>

                      Mon dieu, ce topic part en flood!
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Comportement bizard de la décrémentation ...

                      × 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