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 :

Afficher du contenu au hasard a partir d'un fichier


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Afficher du contenu au hasard a partir d'un fichier
    Bonjour

    je possede le fichier "oneliners" (en piece jointe) qui contient des jokes. Je voudrais que mon pogramme en affiche une au hasard, a chaque fois que l'utilisateur tape Y.

    Voici mon code:

    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
    50
    51
    52
    53
    54
     
    # include <iostream>
    # include <fstream>
    # include <iomanip>
    # include <cstdlib>
    using namespace std;
    # define   INFILE   "oneliners" /* fichier a ouvrir */
     
    main ( )
    {
      ifstream f;  /* pointeur */
      static long offset [ 100 ]; /* array ou stocker les jokes */
      int c = 0; /* compteur */
      char iline [ 81 ]; 
      char yesno; /* variable pour l'input (Y/N) */
     
      srand (time (NULL)); /* initialisation du generateur */
      int joke; A
     
      f.open ( INFILE );
      if ( ! f.is_open ( ) ) {
        cerr << "Unable to open " << INFILE << "!\n\n";
        exit ( 1 );
        }
     
      /*
       * Boucle pour lecture du fichier 
       */
      while ( f.getline ( iline, 81) ) {
        if ( iline [ 0 ] == '\0') {      /* a chaque espace chaque joke */
          offset [ c ] = f.tellg ( );   /* utiliser ftell pour y assigner une position */
          c ++; /* incremenation du compteur */
          }
        }
     
      for ( c = 0; offset [ c ] > 0; c ++ ) {
        f.clear ( );
        f.seekg ( offset [ c ] ); /* chercher la position ? */
        f.getline ( iline, 81 );   /* lire la ligne suivante */
        cout << setw ( 3 ) << c + 1 << ". " << iline << endl;
      }
     
      cout << "\n You have "<< c << " jokes. \n";
      cout << "\n Do you want hear a joke ? (Y/N) > ";
      cin >> yesno;
     
     while ( yesno == 'Y' || yesno == 'y' ) {
      joke = rand()  % 16 + 1;
      cout << "\n A random joke would be number " << joke << "\n";
      cout << offset[c] << endl;
      cout << "\n\n Do you want hear a joke ? (Y/N) > ";
      cin >> yesno;
     }
    }
    Je suis bloque sur plusieurs points.

    Est ce que, d'abord, l'utilisation du seekg() et tellg() s'accorde avec le principe de mon programme ?

    Je ne crois pas bien proceder avec la generation de 1 jusqu'a 16... ( 16 etant le nombre de joke dans le fichier).

    Mais je n'arrive pas a afficher une joke au hasard

    Dernier point difficile, une joke ne contient pas qu'une ligne elle peut contenir deux. Comment regler ce probleme aussi ?

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Afficher le contenu d'un panel à partir d'un bouton
    Par zied_m dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 25/03/2013, 23h58
  2. Réponses: 6
    Dernier message: 01/03/2011, 11h13
  3. [MySQL] Afficher le contenu d'une table à partir des champs d'une autre
    Par cheik_koita dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 15/03/2009, 17h55
  4. [snmp] afficher le contenu d'une trap snmp dans un fichier
    Par liverbird dans le forum Développement
    Réponses: 4
    Dernier message: 20/07/2007, 13h49
  5. Réponses: 3
    Dernier message: 27/01/2006, 18h35

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