IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Traduction algorithme / C++


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut Traduction algorithme / C++
    Bonjour,
    Il faut que je traduise l'algorithme suivant en C++.
    Cependant, j'ai beaucoup de mal, surtout avec la "boucle recommencer".
    Y a-t-il une âme charitable qui pourrait m'aider?
    Nom : alog.jpg
Affichages : 14376
Taille : 159,9 Ko

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2012
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 65
    Par défaut
    Essaye d'écrire l'algorithme toi-même, et après nous pourrons t'aider s'il y a des choses à corriger, mais demander à ce qu'on fasse l'exercice à ta place ne semble pas être la méthode la plus judicieuse pour apprendre.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Je suis venu sur ce forum afin que l'on m'aide pas que l'on fasse mon travail à ma place.
    J'ai dû mal m'exprimer.
    j'arrive à faire la boucle du jeu pour trouver la variable à découvrir, mais je ne sais pas comment faire en sorte (je ne sais pas le coder) que le jeu afficher perdu quand on n'a plus de coup (tout en restant cohérent dans le code) et la boucle pour redémarrer le programme....
    voila ce que j'ai coder pour l'instant (et qui marche)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
       int coup,c,k=10;
       cout<<"En combien de coup pensez vous pouvoir reussir?"<<endl;
       cin>>coup;
     
       while (coup!=0)
       {
           cout<<"Saisissez un chiffre:"<<endl;
           cin>>c;
           if(c==k)
           {
               cout<<"GAGNE!!!"<<endl;
            }
           else
            if (c>k)
           {
               cout<<"en dessous"<<endl;
               coup--;
            }
           else
           {
               cout<<"en dessus"<<endl;
               coup--;
           }
     
       }
     
     
        return 0;
    }

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il te suffit de l'entourer avec une boucle do-while.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Sans préjuger de ton code, j'avais cru comprendre qu'il fallait convertir cet algorithme en POO (C++ ici). Ton code ressemble plus à du C qu'à du C++. Es-tu sûr de bien répondre à la question posée ?

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Bonjour.

    Sans préjuger de ton code, j'avais cru comprendre qu'il fallait convertir cet algorithme en POO (C++ ici). Ton code ressemble plus à du C qu'à du C++. Es-tu sûr de bien répondre à la question posée ?
    Il veut "traduire un algorithme en C++", pas forcément faire de la POO (même si on est d'accord, faire du C++ sans POO c'est perdre 99% des intérêts du langage)
    En tout cas vu ce qui est demandé, faire des classes ou autre ne servirait à rien

  7. #7
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par the Hound Voir le message
    Il veut "traduire un algorithme en C++", pas forcément faire de la POO (même si on est d'accord, faire du C++ sans POO c'est perdre 99% des intérêts du langage)
    En tout cas vu ce qui est demandé, faire des classes ou autre ne servirait à rien
    Une bonne partie de la STL s'utilise sur des objets mais n'est pas orientée objet ; je pense surtout à ce qu'il y a dans #include <algorithm>. Cela n'enlève rien de son intérêt.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Bonjour,
    En fait on me demander de créer une application console en C++ répondant à l'algorithme présenter au début du fil.
    Je ne comprends pas où placer le "do...while" que l'on me conseille de placer afin que le "jeu", lorsque la variable "coup" est égale à 0 affiche le "recommencer"
    pour lequel on saisi une variable "start" qui si elle est égale à Y reprend la boucle du jeu ou si elle est égale à N "return 0".

  9. #9
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Si tu veux utiliser un do { } while(); (personnellement j'aurais fais un simple while pour pouvoir facilement limité la portée de la variable r), le code va ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // g++ -Wall -Wextra -Wconversion -Wsign-conversion -std=c++11 -pedantic -fopenmp main.cpp -o main && ./main
    // g++ -Wall -Wextra -Wconversion -Wsign-conversion -std=c++98 -pedantic -fopenmp main.cpp -o main && ./main
     
    #include <iostream>
     
     
    int main()
    {
    	char r;
     
    	do
    	{
    		// TODO
     
    		std::cout << "Recommencer ? (O/N) = " << std::flush;
    		std::cin >> r;
    	}
    	while (r != 'N');
     
    	return 0;
    }

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    merci de ta réponse mais par rapport à mon code de départ (en "while" ou "do-while"), je l'insère où?
    c'est surtout ça mon problème.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    j'avais en effet codé un truc bien moins affiné que ton code mais mon gros problème est le positionnement de ces lignes dans la boucle que j'ai codée.

  12. #12
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Dans mon code :
    - la ligne 11 correspond à « Début »
    - la ligne 15 & 16 correspond à « Afficher : Recommencer »
    - la ligne 18 correspond à « Choix ? »
    - la ligne 20 correspond à « Fin »

    Tout le reste doit être mis où il y a le commentaire // TODO (to do peut se traduire par : à faire).

    Si tu rencontres d'autre difficultés, il nous faudra ton code pour pouvoir vraiment t'aider.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Merci, grâce à l'indication "géographique" de placement de ce morceau de code, j'ai réussi, en modifiant également mon code.
    Merci de votre précieuse aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
        int coup=0,c,k=10;
          char r;
     
    	do
    	{
    	    if(coup==0)
            {
                cout<<"En combien de coup pensez vous pouvoir reussir?"<<endl;
                cin>>coup;
            }
     
     
     
            cout<<"Saisissez un chiffre:"<<endl;
           cin>>c;
           if(c==k)
           {
               cout<<"GAGNE!!!"<<endl;
               coup=0;
            }
           else
            if (c>k)
           {
               cout<<"en dessous"<<endl;
               coup--;
            }
           else
           {
               cout<<"en dessus"<<endl;
               coup--;
           }
     
    		if(coup==0)
            {
                cout<<"PERDU"<<endl;
     
    		cout << "Recommencer ? (O/N) = " << endl;
    		cin >> r;
    		}
    	}
    	while (r != 'N');
    	 return 0;
    }

  14. #14
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Bien

    Voici quelques conseils :
    - déclare les variables coup, c, k là où tu en as besoin uniquement afin de limiter leur portée (et éviter des erreurs)
    - indente correctement ton code
    - n'utilise pas using namespace std;

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Merci pour les conseils, que dois je utiliser à la place de usingnamespacestd?

    c'est quoi indenter?
    En tous cas merci, j'ai réussi à comprendre.

  16. #16
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Dans un vrai fichier source (par opposition à un fichier d'en-tête), "n'utilise pas using namespace std;" relève plus du dogmatisme qu'autre chose.
    Par contre, il ne faut jamais l'utiliser dans un fichier d'en-tête.

    L'alternative, c'est de préciser le namespace à chaque fois:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "En combien de coups pensez-vous pouvoir reussir?" << std::endl;
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par fenrhir18 Voir le message
    c'est quoi indenter?
    Wikipédia - Style d'indentation

    Citation Envoyé par Médinoc Voir le message
    Dans un vrai fichier source (par opposition à un fichier d'en-tête), "n'utilise pas using namespace std;" relève plus du dogmatisme qu'autre chose.
    Par contre, il ne faut jamais l'utiliser dans un fichier d'en-tête.
    Il ne faut pas utiliser using namespace; dans les fichiers d'en-tête.
    Dans les fichiers sources, si on l'utilise "mal", les signatures des fonctions peuvent être différentes entre la déclaration (dans le .hpp) et la définition (dans le .cpp) pour une même fonction
    Il ne reste donc q'une seule utilisation possible (pour moi) : dans le corps des fonctions elle-mêmes. Tant que cela n'améliore pas beaucoup la lisibilité, je le déconseille ; et je le déconseille encore plus pour les débutants afin qu'ils identifient facilement ce qui vient de std (la bibliothèque standard), du langage lui-même ou d'autres bibliothèques.
    À partir de là, j'arrive à dire, sans aucune honte, « n'utilise pas using namespace », même si cela n'est pas tout à fait vrai (comme expliqué juste avant)

Discussions similaires

  1. ISN Traduction algorithme d'Algobox en langage Java.
    Par Linnleah2 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 18/04/2014, 11h48
  2. Vérification traduction algorithme en code Java
    Par FATENMRABET dans le forum Général Java
    Réponses: 4
    Dernier message: 23/09/2013, 10h35
  3. Traduction d'algorithme en Pascal : calculer x^k
    Par Zac EFRON dans le forum Pascal
    Réponses: 6
    Dernier message: 08/12/2008, 00h35
  4. Réponses: 2
    Dernier message: 30/12/2007, 12h52
  5. Réponses: 6
    Dernier message: 21/09/2007, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo