Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmez avec le langage C++

Boucle infinie

Sujet résolu
    26 septembre 2015 à 17:53:32

    Bonjour à tous,

    Je suis au premier TP du cours de Mathieu et Mathieu sur le langage C++. Il s'agit de faire deviner un mot mystère d'après son anagramme.

    Voici mon code :

    #include <iostream>
    #include <string>
    #include <ctime>
    #include <stdlib.h>
    
    using namespace std;
    string melangerLettres(string mot)
    {
        srand(time(0));
        string motMelange;
        int pos(0);
        while(mot.size()!=0)
        {
            pos=rand()%mot.size();
            motMelange+=mot[pos];
            mot.erase(pos,1);
        }
        return motMelange;
    }
    
    int main()
    {
        string proposition, melange, mystere;
        cout<<"Saisissez un mot : ";
        cin>>mystere;
        melange=melangerLettres(mystere);
    
        do
        {
            cout<<endl<<"Quel est le mot mystere ? "<<melange<<endl;
            string proposition;
            cin>>proposition;
    
            if(proposition==mystere)
            {
                cout<<"Bravo ! Vous avez trouve !"<<endl;   
            }
            else
            {
                cout<<"Non, essayez encore : "<<endl;
            }
        }
        while(proposition!=mystere);
        return 0;
    }
    

    Je ne comprends pas pourquoi le jeu ne s'arrête pas lorsque j'entre le bon mot mystère. Je ne parviens pas à sortir de la boucle.

    Merci de votre aide.

    A bientôt...

    • Partager sur Facebook
    • Partager sur Twitter
    Ex-prof, développeur "Junior" (Haha !).
      26 septembre 2015 à 18:03:31

      Oui, bon, ça va, j'ai trouvé : j'ai déclaré deux fois la variable proposition. Ligne 23 et ligne 31. En effaçant la ligne 31, ça marche !

      A +;)

      • Partager sur Facebook
      • Partager sur Twitter
      Ex-prof, développeur "Junior" (Haha !).
        26 septembre 2015 à 18:07:46

        Lu'!

        Markos a écrit:

        Je suis au premier TP du cours de Mathieu et Mathieu sur le langage C++. Il s'agit de faire deviner un mot mystère d'après son anagramme.

        Changes en. Ce cours apprends un sacré paquet d'âneries à ne pas faire, en plus du montrer des exemples de code buggés et d'être obsolète (quelques recherches sur le forum t'en diront plus). Prends plutôt le cours de C++ de @gbdivers, même s'il est encore en écriture il ne contient pas ce genre de bavures. Si tu as des problèmes de compréhension sur une partie et que ce n'est pas à cause d'un manque d'étude du cours, tu peux poster ici.

        Concernant ton problème, le mot proposition que tu saisis dans la boucle est déclaré dans la boucle, celui que tu compares à la suite de ta boucle est celui qui est déclaré en dehors. Ce n'est donc pas le même !

        Ton code actuel amputé des affichages etc :

        int main()
        {
            string proposition, melange, mystere;
         
            do{
                string proposition; //proposition MASQUE l'ancienne variable proposition
                cin>>proposition; 
            } while(proposition!=mystere); //ici on compare l'ancienne
            return 0;
        }

        Soit exactement comme si tu avais écris :

        int main()
        {
            string proposition, melange, mystere;
         
            do{
                string autre;
                cin>>autre; 
            } while(proposition!=mystere);
            return 0;
        }
        • Partager sur Facebook
        • Partager sur Twitter

        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

          26 septembre 2015 à 22:00:32

          Salut, Ksass`Peuk !

          Merci pour tes conseils. J'allais dire "pas ceux concernant le code, j'ai trouvé par moi-même", mais en fait, ton analyse plus fine m'a permis de mieux comprendre le mécanisme, là où je m'étais contenté de relever une anomalie.

          Merci surtout pour tes conseils et tes recommandations. Pour l'instant, je ne sais pas si je vais arrêter là ce cours, mais je vais à coup sûr jeter un coup d’œil sur celui que tu m'as conseillé... voire plus si affinités.

          L'avantage, avec Openclassroom (ex-Site du Zéro), c'est que les choses sont enseignées simplement et avec humour, et en reprenant les bases à partir de zéro, ce qui les rend faciles à lire.

          A bientôt et merci encore pour ton aide.

          • Partager sur Facebook
          • Partager sur Twitter
          Ex-prof, développeur "Junior" (Haha !).
            26 septembre 2015 à 23:14:39

            Markos a écrit:

            L'avantage, avec Openclassroom (ex-Site du Zéro), c'est que les choses sont enseignées simplement et avec humour, et en reprenant les bases à partir de zéro, ce qui les rend faciles à lire.

            Ouais mais dans le cas du cours de C++, ça enseigne surtout pas mal de choses fausses ou inutilement complexe.

            • Partager sur Facebook
            • Partager sur Twitter

            Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

              27 septembre 2015 à 0:26:42

              Markos a écrit:

              L'avantage, avec Openclassroom (ex-Site du Zéro), c'est que les choses sont enseignées simplement et avec humour, et en reprenant les bases à partir de zéro, ce qui les rend faciles à lire.

              Je te confirme, si tu veux rigoler, je te déconseille mon cours. Regardes plutôt "The Big Bang Theory", c'est beaucoup plus drôle.

              Si tu recherches de la lecture pour t'endormir le soir, pareil : ne lis pas mon cours. Je te recommande les livres de Beevor sur le seconde guerre mondiale (bon, ok, pas forcement top pour dormir. Un Clancy peut être ?)

              Mon cours est beaucoup plus modeste que cela : orienter le lecteur pour l'aider à acquérir (par lui même = faire beaucoup d'exercices) des bases correctes en C++.

              • Partager sur Facebook
              • Partager sur Twitter
                27 septembre 2015 à 11:19:01

                @gbdivers

                Je comprends ta réaction, tu as raison à 100%. Si l'on veut apprendre à coder, il faut prendre la chose au sérieux. Je n'ai d'ailleurs jamais dit que je n'allais pas suivre les conseils de @Ksass'Peuk. En fait, c'est assez convaincant. 

                Comprends à ton tour ma réaction, et mon impatience à savoir créer des programmes graphiques, même simples, qui ressemblent à quelque chose.

                Va voir ma bio sur mon profil : je voudrais bien prendre une vraie formation de développeur, avec un prof physiquement présent, mais une véritable formation coûte cher, et Pôle Emploi refuse de m'aider à financer quoi que ce soit. J'ai été voir votre profil, à toi et à Kssas'Peuk, vous êtes des pros, je ne le suis pas (j'aurais aimé croire que je peux encore le devenir). Je suis juste un quinqua avec une situation professionnelle précaire, qui s'est toujours passionné pour l'informatique, qui voudrait créer de "vrais" logiciels, et qui est passé à côté d'une vraie carrière professionnelle parce qu'à mon époque, la plupart de ces choses n'existaient pas.

                Tout ça pour dire qu'à mon âge et avec ma situation, on voudrait apprendre plus vite.

                Je vais tâcher de prendre le temps de te lire attentivement, et je te remercie de tes précieux conseils.

                A bientôt.

                • Partager sur Facebook
                • Partager sur Twitter
                Ex-prof, développeur "Junior" (Haha !).
                  27 septembre 2015 à 13:17:25

                  Je suis pro également et plus très loin du demi siècle (46 ans), je ne voudrais pas briser tes rêves, mais le développement est plutôt un métier de jeune. Les développeurs agés sont assez rares parce que le cursus professionnel mainstream à tendance à orienter les dev vers la conduite de projet. Les dev séniors sont généralement  hyper experimentés avec souvent plusieurs domaines d'expertises (pas forcément liés à l'informatique) que seule une longue carrière peut leur apporter et qu'on met sur des développements critiques et/ou stratégique souvent liés à leurs domaines d'expertise annexes.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                    27 septembre 2015 à 14:21:15

                    Mon message avait peut être un ton plus sec que ce que j'aurais voulu. 

                    Selon les capacités de chacun, on assimile plus ou moins vite. Mais à part cela, le chemin pour apprendre quelque chose (dont le C++ ou n'importe quel langage de programmation) nécessite d'acquérir un certains nombres de compétences et notions. Il n'y a pas moyen d'y échapper, il faut bosser.

                    Un "jeune" pourra plus facilement faire des erreurs (ou tout au moins, ça sera moins critique). S'il suit un mauvais cours, il apprendra les notions qu'il lui manque lors de ses premiers pas professionnels. C'est une perte de temps, mais c'est inévitable (si on les corrige sur certaines erreurs, ils en feront d'autres... les jeunes sont cons :) ). Tu ne peux pas te permet ces erreurs dans ton apprentissage (tu n'as pas le temps) et tu peux les éviter, puisque tu as l'expérience (tu peux donc te poser et prendre du recul sur ton apprentissage, pour savoir s'il est optimal, ce qui est important, faire la relation avec tes propres connaissances "de la vie").

                    <mode cliché>Typiquement, un jeune, quand tu lui fais une remarque, il va dire "non, mais c'est bon, je sais ce que je fais". Une personne plus expérimenté va répondre "hum........", puis "ok, j'y réfléchi et on en reparle"</mode cliché>

                    Sinon, malheureusement, j'ai tendance à appuyer la remarque de int21h. Tu ne seras pas considéré comme "dev sénior" par les boites, puisque tu n'as pas l'expérience du dev, ni les diplômes correspondant. En France, c'est le principal critère. En plus, tu n'accepteras probablement pas de faire 50h payé 35, comme les autres devs "jeunes", être dispo soir et week-end en fonction des besoins de ton N+1, tu ne seras pas mobile (partir 6 mois à l'autre bout de la France dans un hôtel premier prix), etc.

                    C'est un peu caricatural ce que je dis, mais cela pourrait t'arriver. Voire que tu obtiennes un refus systématique à l'embauche.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 septembre 2015 à 14:24:02

                      @int21h

                      Je sais bien tout ça. Mais je suis trop mordu pour laisser tomber. Je sais que je ne deviendrai jamais développeur, même si j'espère que quelques langages de programmation sur mon CV peuvent m'ouvrir quelques voies supplémentaires... comme employé de bureau backoffice. Je voudrais faire plus que de la simple saisie de données. Bref, admettons.

                      Il n'y a pas des choses que je pourrais faire en free-lance ?...Non ?...Bon, tant pis !

                      Bref, tu penses que je n'en ferai jamais ma profession, soit. Ce discours, je le connais par cœur. Il n'y a pas de place pour les vieux dans ce métier, et j'emporterai mes regrets dans la tombe.

                      Mais il y a une chose dont je suis certain : je continuerai à essayer d'acquérir les compétences qu'il faut pour -  un jour lointain - m'enorgueillir de faire un boulot "de pro".

                      Sans rancune

                      A+

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Ex-prof, développeur "Junior" (Haha !).
                        27 septembre 2015 à 18:47:22

                        Le simple fait que j'existe prouve que les vieux ont leur place dans ce métier. Mais n'entre pas qui veut, en l'occurence, le metier fait la part belle à ses vieux (ceux qui ont vielli dans le métier). Comme je l'ai dit dans mon post précédent, le secret de la longévité dans la carrière, c'est l'experience et la compétence. En tant que débutant tu ne peux pas prétendre à la compétence, et  encore moins à l'expérience. Lorsqu'un employeur va recruter un developpeur tout venant, il aura l'embarras du choix et il prendra un jeune, parce qu'il sera pas cher et corevéable à merci (désolé de briser des rêves, welcome in the real world). S'il veut du haut de gamme, il n'aura aucun choix, il va devoir aller débaucher l'oiseau rare et les conditions de l'oiseau rare ne seront pas du tout les mêmes (l'oiseau est toujours un rapace).

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                          27 septembre 2015 à 22:39:24

                          Mes rêves, ça fait longtemps qu'ils sont brisés, mais comme je le disais je suis "mordu". Je ne prétends plus à rien, surtout pas à devenir développeur pour un patron (relis mon précédent post). Quant à être corvéable à merci, quand on est mordu, on ne compte pas les heures. Comme je l'ai dit, je pensais juste pouvoir faire un peu plus que des jobs d'opérateur de saisie payés au lance-pierres, c'est tout, juste un peu plus (en attendant, je vais continuer à rechercher des petits boulots de merde).

                          Mais cette conversation nous mène sans doute bien au-delà du cadre de ce forum.

                          L'informatique, et la programmation en particulier, semble agir sur moi comme une drogue dure. Ça me rend juste heureux. Et peut-être que ça m'empêchera de devenir un petit retraité aigri, frustré et malheureux. Je crois qu'on appelle ça une passion. Alors, si ça ne vous fait rien je vais continuer à m'accrocher, et à apprendre, ça me préservera peut-être de l'Alzheimer, ce sera déjà ça. Mais rassurez-vous, ce sera en amateur, et je ne me fais aucune illusion sur mon avenir.

                          A bientôt.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Ex-prof, développeur "Junior" (Haha !).
                            28 septembre 2015 à 0:42:06

                            Salut,

                            Je suis, moi aussi un professionnel, et, bien que j'aie écrit un livre qui est publié, que je suis sur la rédaction d'un deuxième, que je participe à de nombreux forums, et que je sois réellement spécialiste en C++ et en qualité du développement, dés que je dis que ma dernière mission date d'il y a trois ans... ca devient la galère.

                            Et pourtant, je viens de me rendre compte que je suis plus jeune que int21h :p

                            Si tu es vraiment motivé, intéresse toi à la programmation à titre "personnel", mais tu sais sans doute aussi bien que nous que l'age est un facteur discriminant, malgré que la loi est sensée interdire ce genre de discrimination.

                            Ce n'est cependant pas une raison pour abandonner : il y a parfois une "opportunité" qui se présente alors que l'on n'y croyait plus du tout; malheureusement, être débutant et vieux en même temps, c'est vraiment le pire mélange qui soit :p

                            Par chance, dés qu'on a compris quelques principes de base (tests et boucles pour ce qui est du purement procédural), ainsi qu'en approche orientée objet (Demeter + SOLID), la mentalité du langage et quelques spécificités (ex : les exceptions), il y a très facilement de "tout relier" pour avoir une "vue d'ensemble" hors du commun, surtout si tu y ajoutes certaines expériences personnelles (pour moi, ca a été d'être ambulancier pendant près de dix ans "dans une autre vie).

                            Ton expérience d'ex prof peut, d'une certaine manière, s'avérer être un atout, surtout si tu étais ce genre de prof qui savait réellement donner envie à ses élèves d'apprendre (ou à leur faire comprendre autrement qu'en leur disant "tout est dans le cours, vous n'avez qu'à le relire").

                            Seulement, tout le processus dont je parle prend énormément de temps : il faut sans doute compter une dizaine d'années pour arriver à le suivre jusqu'au bout... peut être deux ou trois années de moins, en fonction de ta facilité de compréhension, de ta connaissance de l'anglais et du temps que tu peux passer à l'amélioration de tes connaissances.

                            Et cela signifie que tu seras sans doute tout près de la retraite d'ici à ce que tu y arrives.  Crois tu que cela vaille l'investissement ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                              28 septembre 2015 à 9:13:00

                              koala01 a écrit:

                              Et cela signifie que tu seras sans doute tout près de la retraite d'ici à ce que tu y arrives.  Crois tu que cela vaille l'investissement ?


                              Je l'ai cru, mais je suis le seul à le croire, visiblement. La satisfaction de réussir à créer quelque chose sur l'ordi, pour moi, n'a pas de prix.

                              Je vais essayer de m'occuper de choses plus sérieuses, comme le petit bout de "carrière" qui me reste à vivre, et quand j'aurai un job, je vais essayer de passer ce qui me restera de temps libre à continuer à apprendre, parce que c'est plus fort que moi.

                              Merci pour tes encouragements.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Ex-prof, développeur "Junior" (Haha !).
                                28 septembre 2015 à 13:53:26

                                Markos a écrit:

                                koala01 a écrit:

                                Et cela signifie que tu seras sans doute tout près de la retraite d'ici à ce que tu y arrives.  Crois tu que cela vaille l'investissement ?


                                Je l'ai cru, mais je suis le seul à le croire, visiblement. La satisfaction de réussir à créer quelque chose sur l'ordi, pour moi, n'a pas de prix.

                                Je vais essayer de m'occuper de choses plus sérieuses, comme le petit bout de "carrière" qui me reste à vivre, et quand j'aurai un job, je vais essayer de passer ce qui me restera de temps libre à continuer à apprendre, parce que c'est plus fort que moi.

                                Merci pour tes encouragements.


                                Attention, tu es sans doute bien placé pour savoir que l'apprentissage est quelque chose de particulièrement important.  Et, en cela, je ne peux que t'inciter à apprendre le développement informatique, même si "c'est sur le tard".

                                Certains développeurs ont pu développer seuls -- je pense entre autre l'auteur de la SFML, une bibliothèque qui fait un véritable tabac, qui et développée par un type seul à la base --des choses véritablement géniales et utilisées par de très nombreuses personnes.

                                Ce que je veux mettre en évidence ici, c'est que le fait d'être professionnel ne donne ni la garantie ni l'exclusivité des bonnes idées (ce serait beaucoup trop simple :P).

                                Simplement, en tant que "débutant", tu risques d'avoir beaucoup de mal à mettre ta bonne idée "à plat" et à la développer.  Quelqu'un d'expérimenté à surement "plus de chances" d'y arriver dans un délais "raisonnable" et en évitant un maximum des écueils contres lesquels un  débutant risque de se briser.

                                Toujours est-il que, cela risque de prendre énormément de temps (surtout si tu développes seul), mais il n'est absolument pas impossible que tu aies "une bonne idée", que tu prennes peut être plusieurs années pour la mettre au point puis que tu décides de la diffuser d'une manière ou d'une autre.

                                Je n'irai pas jusqu'à en dire que tu pourras en vivre (quoi que... va savoir...) ni que ce sera un long fleuve tranquille, si l'idée est vraiment bonne, cela peut t'arriver à toi aussi ;)

                                Et, sinon, une fois que tu t'es habitué avec quelques projets "jetables" durant ton apprentissage, il existe une multitude de projets opensources pour lesquels tu peux collaborer si tu le souhaites ;)

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                                  28 septembre 2015 à 17:20:50

                                  Merci @Koala01, et tous les autres pour votre soutien et vos conseils.

                                  A un de ces jours...

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Ex-prof, développeur "Junior" (Haha !).

                                  Programmez avec le langage C++

                                  × 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