logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [C++] Critiquez mon prog!
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [C++] Critiquez mon prog!  (Lu 4071 fois)
Mic32768
Profil challenge

Classement : 1031/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« le: 16 Mai 2007 à 20:20:30 »

Salut, ça doit faire une bonne centaine de fois que vous voyez ce genre de prog de n00b mais bon..

Je voulais juste savoir de quelle manière il pourrait être amélioré et savoir s´il y a des trucs à ne pas faire dedans, si c´est bien ordonné etc.. Je suis très ouvert aux critiques alors n´ayez pas peur!

Je voulais également savoir si il y avait une meilleure méthode pour vider le buffer de cin que celle-ci:

cin.ignore(numeric_limits<streamsize>::max(), '\n');

Ça fonctionne plutôt bien, mais je comprends pas trop le rôle de numeric_limits..

Voilà le lien:
http://pastecode.net/?action=viewpost&tag=1668

Si vous avez des améliorations et/ou optimisations à apporter, n´hésitez surtout pas!
Journalisée
frok

Profil challenge

Classement : 1375/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 70


Voir le profil
« #1 le: 16 Mai 2007 à 21:02:31 »

Pourquoi en C++ pour ça?
Moi je l'ai fais avec les améliorations (compteur de coups,mode 2 joueurs,3 niveaux de difficulté) entièrement en C
Journalisée
Mic32768
Profil challenge

Classement : 1031/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« #2 le: 16 Mai 2007 à 21:07:46 »

En fait je veux m'assurer que ce que j'ai pour le moment est bien codé avant d'entreprendre d'autres choses.
Et en C++ parce que c'est avec ce langage que je veux me familiariser le plus et surtout pour entreprendre bientôt la P.O.O. en profondeur.
Sinon je peux voir ton programme pour voir comment tu t'y est pris?
Journalisée
frok

Profil challenge

Classement : 1375/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 70


Voir le profil
« #3 le: 16 Mai 2007 à 21:12:16 »

No probleme,c'était mon tout premier,il date un peu
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main ( int argc, char** argv )
{  
    int playAgain = 1;
    // Party Again!
   
do {

    long nombreMystere = 0, nombreChoisi, nombreEntre = 0, compteurCoups = 0, nombreMax = 0, MIN = 0, MAX = 0;
   
    // Le joueur choisit son niveau
   
    printf("*****MENU*****\n\n");
    printf("1.niveau 1--------entre 1 et 100\n");
    printf("2.niveau 2--------entre 1 et 1000\n");
    printf("3.niveau 3--------entre 1 et 10000\n\n");
    printf("Choisissez votre niveau\n");
    scanf("%ld", &nombreMax);
   
    switch (nombreMax)
    {
           case 1:
                 nombreMax = MAX = 100, MIN = 1;
                break;
           case 2:
                 nombreMax = MAX = 1000, MIN = 1;
                break;
           case 3:
                 nombreMax = MAX = 10000, MIN = 1;
                break;
           default:
                   printf("Ce niveau n'existe pas!");
    }
   
    // Le joueur choisit son mode
   
    printf("\nChoisissez votre mode\n");
    printf("\n1.Mode 1 joueur");
    printf("\n2.Mode 2 joueurs\n");
    scanf("%ld", &nombreMystere);
   
   
    switch (nombreMystere)
    {
           case 1:
                //generation du nombre aleatoire
                srand(time(NULL));
                nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                break;
           case 2:
                printf("Choisissez un nombre mystere..\n");
                scanf("%ld", &nombreMystere);
               
                break;
           default :
                   printf("Ce mode nexiste pas!");
    }
   
   
   
 
         
    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */

    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%ld", &nombreEntre);
        compteurCoups++;

        // On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
        else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
        else
           {
            printf ("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", compteurCoups);
            printf ("Recommencer une partie?\n\n");
            printf("1.Oui\n");
            printf("2.Non\n");
            scanf("%ld",&playAgain);
           }
       
           
           
    } while (nombreEntre != nombreMystere);

} while (playAgain == 1);

    system("PAUSE");
}
Journalisée
Mic32768
Profil challenge

Classement : 1031/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« #4 le: 16 Mai 2007 à 21:32:11 »

Hey merci, je regarde ça! Sinon, aurais-tu des améliorations à apporter à mon code?
Journalisée
frok

Profil challenge

Classement : 1375/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 70


Voir le profil
« #5 le: 16 Mai 2007 à 21:55:48 »

Non désolé je me suis pas encore assez intéressé au C++
Journalisée
Mic32768
Profil challenge

Classement : 1031/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 67


Voir le profil
« #6 le: 16 Mai 2007 à 21:58:38 »

Si quelqu'un a des améliorations à suggérer, gênez-vous pas pour dire si quelque chose est pas correct!
Ce programme doit devenir parfait
Journalisée
neoflo
Profil challenge

Classement : 8123/54343

Membre Complet
***
Hors ligne Hors ligne
Messages: 171


Voir le profil WWW
« #7 le: 21 Mai 2007 à 19:24:14 »

Citation de: Mic32768
et surtout pour entreprendre bientôt la P.O.O. en profondeur.
Tu as cas te donner un avant gout en faisant une classe pour générer des nombres aléatoires

Par exemple sous la forme :

Code:
class Randomizer {

 public:

  /**
   * @brief Constructeur
   *
   */
  Randomizer() {
      static bool _isInit = false;
      if(_isInit == false) {
           /*on initialsera qu'une unique fois dans toute l'exécution du programme le générateur aléatoire*/
           srand(time(0));
           _isInit = true;
     }
 
  /**
   * @brief génére un nombre aléatoire
   *
   * @param max la borne supérieur
   * @return un nombre aléatoire entre 1 et max
   *
   * @throw std::exception si max<1
   */
  int get(int max) {
    if(max<1)
      throw std::exception("Randomizer :: get : max<1");

    return (rand() % max +1);
  }


 };
En général, on ne met pas des const quand tu passes une valeur directement sur la pile (const in en l'occurence), car de toute façon, vu que la valeur est copié, il n'y a aucun risque que la variable soit modifié. C'est en revanche nécessaire et conseillé de le faire si il y a un passage par référence (const int & i) ou par pointeur (const int * i) pour indiquer que la variable pointée ne sera effectivement pas modifié.
Journalisée

Pages: [1]
  Imprimer  
 
Aller à: