Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de boucle

    10 février 2006 à 20:09:46

    Bonjour voilà je suis sur un projet de calculatrice type comamnde linux, ou windows, mais j'ai un problème de boucle. Je rentre une donné, que je sais faute, ensuite j'en redonne une et il fait la boucle à l'infini...

    script :

    int main(int argc, char *argv[])
    {
    int hdncs = 1;
    int recalcule = 0;
    char operation[255];

    do
    {
        if ( strcmp(operation,"menu")==0)
        {
       printf ("                                 ----MENU----\n\n\n");
        char operation[255];/**/
        printf("Tapez help pour voir les differentes commande\n");
        printf("Faites votre choix : "); scanf("%s", operation);
        printf("\n");
    }
            if (recalcule >= 1 && hdncs != 1)
            {
    printf("Commande suivante : ");scanf("%s", operation);
    printf("\n");
    }
    int hdncs = 0;

    if ( recalcule == 1)
        {
             recalcule =0;
        }
        recalcule++;
    // ici des tas de conidtions...
    else
       
    {   

    int hdncs = 1;

             printf("error syntaxe : ");
             scanf("%ld", operation);
             printf("\n");
           
    }
    }
    while ( recalcule == 1);
    }
    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2006 à 20:44:21

      mais t'as beaucoup de trucs qui manquent non?
      moi je trouve pas ça forcément très clair...
      enfin désolé peut-etre que c'est moi qui ne vois pas l'erreur
      • Partager sur Facebook
      • Partager sur Twitter
        10 février 2006 à 21:29:12

        Oui mais ceux sont des choses assez répétitives et ça ne change rien pour mon problème. Alors est ce que quelqu'un a une idée d'ou vinet le problème ou même une solution ?
        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2006 à 21:40:32

          Déjà ton code n'est pas compilable, une incrémentation entre un if{} et un else{}, je ne connaissais pas...
          Et pitié, indentez vos codes :/
          Si vous ne le faites pas chez vous, au moins faites un effort quand vous demandez de l'aide, ça fait vraiment négligent...
          http://vhf.ath.cx/indent/ ou http://kokokot.dyndns.org/~victor/indent/
          • Partager sur Facebook
          • Partager sur Twitter
            10 février 2006 à 21:50:54

            DSl mais je sais pas ce que c'est indenter et surtout à quoi ça sert ? :-°

            Ensuite je vois pas je pourrais incrémentez ou je veux dans mon code... Ca change en rien au final du code ça a la même valeur, la seul chose qui chance c'est le moment où il le fait.( or j'ai besoin qu'il le fasse à ce moment précis du code :D )
            • Partager sur Facebook
            • Partager sur Twitter
              10 février 2006 à 22:08:36

              L'indentation c'est faire des retraits en début de ligne pour mieux repérer les blocs.
              Généralement, on étend ça à toute la mise en forme du code de façon à permettre une meilleure lisibilité (position des accolades, espaces...)
              Le lien que j'ai donné indente automatiquement le code selon un style voulu (K&R par défaut).

              Et sinon, non, faire une action entre le if et le else d'une condition c'est stupide : ça ne peut absoluement pas être utile et c'est imprévisible à la lecture.
              Et de toutes façons, ça ne compile pas chez moi.
              • Partager sur Facebook
              • Partager sur Twitter
                10 février 2006 à 22:17:09

                il compile pas ? moi il compile sans problème ( je suis sous Dev c++) Donc toi tu penses qu'il y une erreur à cette incrémentation ? C'ets ça qui ferait bugger le prog, et qu'il me ferait une boucle infinit ?
                Attendez, je viens de trouver en relisant :
                printf("error syntaxe : ");
                scanf("%ld", operation);
                printf("\n");

                il prend des chiffres, donc c'ets normal qu'il ne trouve jamais de solution et qu'il tombe tjrs sur le else et qu'il me fasse une boucle infinit... il fallait que je fasse scanf("%s", operation);

                Bon je vous remmercie à tous pour votre aide. :D

                et sinon pour cette incrémentation, je pense que je suis obligé de faire comme ça.
                • Partager sur Facebook
                • Partager sur Twitter
                  10 février 2006 à 22:33:16

                  On n'est jamais obligé de faire comme ça, tu as du mal penser quelque chose.
                  Et j'ai essayé sous Dev-C++ :
                  30 main.c parse error before "else"
                  Tu as au moins essayé le même code que tu as copié/collé dans ton premier message ?

                  Et puis cette incrémentation c'est déjà un problème, oui, mais certainement pas le seul, et ça ne peut pas faire une boucle infinie, ça empêche juste la compilation.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 février 2006 à 22:45:49

                    Je viens d'essayer mon programme, et en effet, il ne marche pas, mais j'ai enlevé l'incrémentation et là ça a marché. Comme tu l'as dit entre un if et un else il ne veut pas, pourtant entre plusieurs "if" il ets d'accord or ça tombe bein c'ets mon cas. Ensuite : Peut être que mon algorithme de mon prog ( ou du moins de cette parti) ets à revoir ^^ mais en essayant j'ai trouvé que c'était la meilleur des solutions pour faire ce que je voulais faire. ( je veux faire apparaitre, le texte " commande suivante" tout le temps sauf la première fois.)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème de boucle

                    × 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