Weergegeven resultaten: 1 t/m 3 van 3
  1. #1
    Member Crazed's schermafbeelding
    Lid sinds
    24/04/05
    Locatie
    Evergem
    Berichten
    78
    iTrader
    0

    [ALG][C++] Willekeurige lijn uit bestand

    Ik probeer een willekeurige lijn uit een txt bestand te lezen en gebruik daarvoor volgende code:
    Code:
    fstream bestand;
    bestand.open("woorden.rvf", fstream::in);
    char buffer[20];
    if(!bestand)
    {
        cout << "Kon het bestand niet openen";
    }
    else
    {
        // bestand kon worden geopend
        char aantal_woorden[3];
        bestand.getline(aantal_woorden, 3);
    
        int regels = atoi(aantal_woorden);
               
        srand(time(NULL));
        char woord[64];
        int random = regels*rand()/(RAND_MAX+1);
               
        cout << "random: " << random;
               
        for(int i = 0; i < random; i++)
        {
            bestand.getline(woord, 64);
        }
               
        cout << endl << random << endl << woord[0] << woord[1] << woord[2];
    }
    Het in te lezen bestand heeft op z'n eerste regel staan hoeveel woorden (lijnen met woorden dus) er in het bestand staan. (Als iemand weet hoe ik dit automatisch door C++ kan laten tellen, be my guest) Dit aantal wordt opgeslaan in de variabele "regels"

    Het echte probleem zit hem echter in het selecteren van een willekeurige lijn. Dit is helemaal niet willekeurig. Na drie keer uitvoeren, krijg ik 3x dezelfde waarde, wat dus niet de bedoeling is... Waar zit de fout??

  2. #2
    Approved 9-lifer Tyfius's schermafbeelding
    Lid sinds
    1/09/02
    Locatie
    Steenokkerzeel
    Berichten
    6.730
    iTrader
    0
    In de rapte en dus verre van perfect.
    Code:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    
    int main()
    {
        string filename;
        char c;
            
        srand((unsigned)time(NULL));
        
        cout << endl << "Naam van het bestand: ";
        cin >> filename;
        cout << endl;
        
        ifstream d_file;
        d_file.open(filename.c_str());
        if (!d_file.is_open())
        {
            cout << "Bestand " << filename << " bestaat niet." << endl;
            exit(1);
        }
        else
        {        
            //prints the number of lines in a file
            string t;
            int lines = 0;
            int random = 0;
    
            while(getline(d_file, t, '\n'))
            {
                ++lines;
            }            
    
            cout << "Aantal lijnen in het bestand: " << lines << endl;
            
            random = (rand() % lines) + 1;
            cout << "Random getal: " << random << endl;
            
            for (int i = 1; i < random; i++)
            {
                getline(d_file, t, '\n');
            }
            cout << "Random lijn: " << t << endl;
        }
        d_file.close();    
        return 0;
    }

  3. #3
    Member Crazed's schermafbeelding
    Lid sinds
    24/04/05
    Locatie
    Evergem
    Berichten
    78
    iTrader
    0
    OK, het is gelukt. Bedankt voor de hulp.

Discussie informatie

Users Browsing this Thread

Op dit moment bekijken 1 gebruikers deze discussie. (0 leden en 1 gasten)

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •