Programme de generation aleatoire de noms pour jdr fantastique

Description

Voila mon deuxieme essai de programmation en C++. Le code est tres loin d etre parfait. C'est d ailleur pour cela que je le met ici. pour avoir vos suggestions sur ce que j aurais du faire ou ne pas faire.
Pour résumer ce code permet de générer des noms a partir de trois groupe de syllabe contenu dans un fichier texte.

Source / Exemple :


#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

//variables globales :
int n[3] = {0,0,0};

int Compte ()
{
    //determiner le nombre d'enregistrement pour chaque groupe de syllabe contenu dans le fichier texte
    int num;
    char name[5];

    ifstream name1 ("name1.txt");

    name1>>num>>name;
    while(!name1.eof())
    {
          if (num<100)
          {
                ::n[0] = ::n[0]+1;
                name1>>num>>name;
          }
          else if ((num>100) && (num<200))
               {
                    ::n[1] = ::n[1]+1;
                    name1>>num>>name;
               }
               else
               {
                    ::n[2] = ::n[2]+1;
                    name1>>num>>name;
               }

    }
    name1.close();
}

int Aleatoire (int x)
{
    // Renvoi un numéro de ligne aleatoire en fonction du groupe de syllabes
    int res;
    res = rand()%x+1;
    return res;
}

int main()
{
      int num;
      char name[5];
      int b;
      char c;
      int i;

      srand(time(NULL));//initialisation de seed

      Compte();

      cout<<"Welcome to Fantasy Name Generator\n";
      cout<<"Version 1.0 - Made by DRAGOON\n";
      cout<<"----------------------------------------\n";
      cout<<"\nyou actually have "<<((::n[0])*(::n[1])*(::n[2]))<<" name possibility";
      cout<<"\nhit <Enter> key to generate a name";
      getch();

      do
      {
                      c = 'N';

                     ifstream name1 ("name1.txt");
                     name1>>num>>name;
                     cout<<"\nResult : ";
                     //Boucle qui met bout a bout les trois syllabes en fonction des resultats aleatoire
                     for (i=0;i<=2;i++)
                     {
                         b = ((Aleatoire(n[i]))+(i*100));
                         while(num!=b)
                         {
                                  name1>>num>>name;
                         }
                         cout<<name;
                     }
                     name1.close();
                     cout<<"\n\nwould you like to generate another name ? (O/N) : ";
                     cin>>c;
      }
      while ((c=='o')||(c=='O'));

}

Conclusion :


Vous trouverez le code et le fichier texte dans le zip.
J'attend maintenant vos suggestions :
Notamment comment aurais je pus faire pour eviter la variable globale (sa doit etre simple mais j ai pas trouvé... et puis je suis un peu faignant aussi :p).
Ou est ce que mon algo tiens la route? aurais je pus faire plus simple ?

Merci pour toutes vos remarques a venir meme les plus brutales :)
Bien a vous !!!

-Dragoon-

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.