Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercices] Venez vous entraîner !

(v2)

    30 juin 2011 à 10:52:33

    ben mon code est propre (peut être trop) mais c'est bien d'apprendre à faire tout bien et détailler si plus tard tu peut être amener à modifier le code ...
    Par contre ne pas utiliser la POO est bizarre car on est sur le forum de C++. Sans la POO on peut presque le considérer comme du C avec l'utilisation des objets en plus ...
    • Partager sur Facebook
    • Partager sur Twitter
      30 juin 2011 à 10:57:42

      J'ai encore un peu de mal à utiliser la POO car avant je programmais en C :-° .
      • Partager sur Facebook
      • Partager sur Twitter
        30 juin 2011 à 11:06:56

        Citation : PITETRE

        ben mon code est propre (peut être trop) mais c'est bien d'apprendre à faire tout bien et détailler si plus tard tu peut être amener à modifier le code ...
        Par contre ne pas utiliser la POO est bizarre car on est sur le forum de C++. Sans la POO on peut presque le considérer comme du C avec l'utilisation des objets en plus ...



        N'importe quoi! Le c++ est multiparadigme, si la POO n'est pas utile, on se force pas à l'utiliser parce qu'on est est C++...
        • Partager sur Facebook
        • Partager sur Twitter
          30 juin 2011 à 11:23:00

          @Equinoxe
          Je savais pas qu'on pouvait directement faire les opérations avec les chars o_O
          • Partager sur Facebook
          • Partager sur Twitter
            30 juin 2011 à 11:35:06

            oui mais autant l'utiliser puisque c'est un atout, de plus on est ici pour s'entrainer, donc le but est de faire un code utilisant les connaissances de bases de l'apprenti programmeur

            EDIT : je me propose pour faire une correction de Figlet. Je la donnerai plustard (ou demain)
            • Partager sur Facebook
            • Partager sur Twitter
              30 juin 2011 à 12:19:50

              Selon moi, la seule solution utilisant correctement la POO est celle de PITETRE...
              Edit : @PITETRE : Figlet possède déjà une solution. J'ai pas encore terminé de tout écrire ;)
              • Partager sur Facebook
              • Partager sur Twitter
                30 juin 2011 à 12:21:28

                ben on peut faire différement ...
                • Partager sur Facebook
                • Partager sur Twitter
                  30 juin 2011 à 12:22:52

                  Oui, la solution en paradigme impératif est valable également.
                  Au fait : voir mon édit un post plus haut...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 juin 2011 à 12:38:58

                    ok dsl ^^. Donne moi un exo qui n'en as pas et je la fait. Si y'en as pas je vous propose un puissance 4 (dans le même style que Tic-Tac-Toe) je ferai un post pour celui-ci une fois le code terminé.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 juin 2011 à 13:46:24

                      Citation : germino

                      Selon moi, la seule solution utilisant correctement la POO est celle de PITETRE...
                      Edit : @PITETRE : Figlet possède déjà une solution. J'ai pas encore terminé de tout écrire ;)



                      Et la mienne ? :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 juin 2011 à 14:15:20

                        @PITETRE : Tu peux aller voir là -> http://www.siteduzero.com/forum-83-257 [...] html#r2331622
                        @Dumpy : ta solution compile et tourne bien. Mais elle est en plein milieu des deux paradigmes impératif et objet.
                        Par exemple, une classe Joueur n'aurait pas été une mauvaise idée :)
                        La fonction afficherGrille() aurait dû soit être membre de Grille, soit une surcharge de l'opérateur <<

                        Mais @tous les deux : une classe Game aurait déchargé le main() de tout ce travail :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 juin 2011 à 14:18:01

                          Franchement, je trouve que mettre de des objets juste pour faire de l'Orienté objet c'est inutile. Surtout en C++.
                          Par-contre, mettre la grille comme un objet peut être très utile si plus tard on souhaites installée une IA.

                          Voila ma solution :
                          #include <iostream>
                          #include <string>
                          #include <cstring>
                          #include <ctime>
                          #include <cstdlib>
                          
                          
                          using namespace std;
                          
                          struct Grill
                          {
                             Grill();
                             int  setCase(int, char);
                             char  getCase(int);
                             void  showCase(void);
                             int  winner(void);
                             private:
                             char Case[10];
                          };
                          Grill::Grill()
                          {
                             strcpy(Case, "123456789");
                          }
                          int Grill::setCase(int pos,char c)
                          {
                             if((c == 'O' || c == 'X') && pos>0 && pos < 10 && !strchr("OX", Case[pos-1]))
                                return Case[pos-1] = c;
                             return 0;
                          }
                          char Grill::getCase(int pos)
                          {
                             return (pos>0 && pos < 10)? Case[pos-1]:0;
                          }
                          void Grill::showCase()
                          {
                             cout << "  __________" << endl;
                             for(int i=0;i<8;i+=3)
                                cout << " | " << Case[i] << " | " << Case[i+1] << " | " << Case[i+2] << "|" << endl;
                             cout << "  ~~~~~~~~~~" << endl;
                          }
                          int Grill::winner()
                          {
                             int i;
                             for(i=0;i<8;i+=3)
                                if(Case[i] == Case[i+1] && Case[i+1] == Case[i+2])
                                   return Case[i];
                             for(i=0;i<3;i+=1)
                                if(Case[i] == Case[i+3] && Case[i+3] == Case[i+6])
                                   return Case[i];
                             if((Case[0] == Case[4] && Case[4] == Case[8]) || (Case[2] == Case[4] && Case[4] == Case[6]))
                                return Case[4];
                             return 0;
                          }
                          int main (void)
                          {
                             srand(time(0));
                             int i, nbCoup = 0, j = 1, coup;
                             Grill grilleP;
                             j= (int)((double)rand() / RAND_MAX * 2)+1;
                             while(nbCoup != 9 && !grilleP.winner())
                             {
                                grilleP.showCase();
                                cout << "Joueur " << j << " :" ;
                                cin >> coup;
                                if(!grilleP.setCase(coup, "OX"[j-1])) continue;
                                j=3-j;
                                nbCoup++;
                             }
                             grilleP.showCase();
                             if(grilleP.winner())
                                cout << "Joueur " << 3-j << " a gagner !" << endl << "Bravo !" << endl;
                             else
                                cout << "Ex aequo" << endl;
                             return 0;
                          }
                          
                          • Partager sur Facebook
                          • Partager sur Twitter

                          🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

                            30 juin 2011 à 14:22:11

                            pourquoi ne pas utiliser une classe plutôt qu'une structure, c'est pareil en plus complet ...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              30 juin 2011 à 14:28:08

                              Citation : PITETRE

                              pourquoi ne pas utiliser une classe plutôt qu'une structure, c'est pareil en plus complet ...



                              non c'est la même chose. (modulo l'accessibilité / héritage par défaut.).

                              Sa fait plusieurs fois que je lis ce genre de remarques... c'est dans le cour officiel du sdz qu'on apprend des choses pareils ou quoi?

                              j=rand()%3; => % et rand c'est pas bon. cf les différentes faq pour voir comment mieux faire.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 juin 2011 à 14:28:56

                                C'est pratiquement la même chose. Voir ici.

                                @Goten: J'allais pas m'embête juste pour savoir qui va commencer. Mais si tu y tiens... J'ai juste la flemme de retrouver la formule parmi tous les papiers que j'ai ... Je chercherais plustard. Tout ce que je me souviens c'est que c'était avec double.
                                • Partager sur Facebook
                                • Partager sur Twitter

                                🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

                                  30 juin 2011 à 14:30:28

                                  il manque les operator ce qui fait déjà pas mal ...
                                  puet on faire des template avec les struct ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 juin 2011 à 14:32:16

                                    Citation : PITETRE

                                    il manque les operator ce qui fait déjà pas mal ...
                                    puet on faire des template avec les struct ?


                                    Des operator.. Pour quoi faire ?

                                    PS: J'ai mi un lien dans mon dernier post, lis le.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

                                      30 juin 2011 à 14:32:25

                                      Citation : @che

                                      C'est pratiquement la même chose. Voir ici.

                                      @Goten: J'allais pas m'embête juste pour savoir qui va commencer. Mais si tu y tiens... J'ai juste la flemme de retrouver la formule parmi tous les papiers que j'ai ... Je chercherais plustard. Tout ce que je me souviens c'est que c'était avec double.



                                      Fallait bien critiquer. Plus sérieusement : puisque c'est un exercice, autant virer directement les mauvaises pratiques. (et même si toi très certainement tu sais ce que tu fais d'autre personne vont le lire sans forcément savoir).

                                      et pour pas brasser que du vent :
                                      http://www.bourguet.org/v2/clang/random/

                                      @pitetre : ouai.... (c'est la définition du mot pareil d'ailleurs :) )

                                      edit : j'ai frémis sur strcpy aussi mais bon... Ulrich Drepper quoi :' (fin je suppose que t'es sur un linux)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        30 juin 2011 à 14:44:27

                                        Si j'encourage la POO, c'est simplement que quand on a commencé à faire une classe (ici Grille), le meilleur moyen de faire un code évolutif, c'est de faire d'autres classes.

                                        Le but c'est que les débutants faisant les exercices puissent aller plus loin avec le code qu'ils ont écrit en apportant des améliorations au mini-logiciel obtenu. Et ce n'est pas en fourrant tout dans le main qu'on va pouvoir ajouter l'option partie en réseau au Tic-Tac-Toe !

                                        edit : j'ajouterai que le but de ce topic est d'abord d'aider les débutants à pratiquer la POO même si sur de si petits projets on peut facilement s'en passer : comment vont-ils pouvoir aborder de plus gros projets en POO s'ils ne l'ont pas pratiqué et habitué sur de petits exercices ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 juin 2011 à 14:49:57

                                          J'avais la formule : ((double)rand() / RAND_MAX * n);
                                          Sinon, oui je suis sous linux. Un tableau de char suffisait donc strcpy().

                                          @ germino: La POO franchement, j'encourage pas a en abusé. Seulement quand ça apporte un réel intérêt. Ici, je ne vois pas l'interret d'une class joueur. Ni celuis d'une class gestion.

                                          J'édite le code...
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

                                            30 juin 2011 à 14:52:45

                                            lis mon édit, je pense qu'il te fera mieux saisir mon opinion ;)

                                            edit : si tu veux que nous en discutions, parlons-en sur le sujet méta pour ne pas polluer celui-ci stp ;)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 juin 2011 à 14:57:04

                                              faut pas en abuser je suis d'accord, mais faire une classe Grille ca mange pas de pain ;)


                                              EDIT : pas moyen de virer toute notre pollution ? modo plz
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                30 juin 2011 à 17:26:14

                                                personnellement, comme la si bien dit germino, se forcer à faire de la POO a de nombreux avantages. En effet, on pourra non seulement faire un code clair mais surtout évolutif !!!!! (sans oublier parfois le gain de temps et une plus grande optimisation ^^ )
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  30 juin 2011 à 17:32:21

                                                  @PITETRE Il y a un problème dans ton code : il ne gère pas les cas d'égalité et continu malgré que la grille soit pleine.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    30 juin 2011 à 17:36:22

                                                    oui c'est vrai ;) j'arrengerai ca. Si il y as d'autre problème dites.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      30 juin 2011 à 17:51:52

                                                      Il y a aussi une erreur ou surement une faute de frappe
                                                      tu as écrit : bienvenu dans ce tix-tac-toe
                                                      au lieu de : bienvenu dans ce tic-tac-toe
                                                      :lol:
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        30 juin 2011 à 17:53:37

                                                        oui c'est très pointu en effet (je me doutait même pas que quelqu'un le lirait :p ) mais bonj'ai une escuse : je l'ai fait un peu tard hier :p .
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          30 juin 2011 à 17:58:37

                                                          A aufait, je te confirme, system("clear") n'est pas portable.
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

                                                            30 juin 2011 à 17:59:33

                                                            dommage, quelle est la version windobe ?
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              30 juin 2011 à 18:07:50

                                                              system("cls");
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

                                                              [Exercices] Venez vous entraîner !

                                                              × 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