Pokazanie losowej lini

0

Witam. Chciałbym losować linie z plku txt
tzn. By pokazywało takie cos z zestawu pytan losowo
LINIE:
1.pytanie
2.odp a
3 odp b
4 odp c
5 odp d

Mam taki kod ale pokazuje mi błędy i wyświetla tylko 1 linię póki co:

#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main ()
{
int number_of_lines [3]={1,2,3};
string line;
ifstream myfile("quiz.txt");

if(!myfile.is_open()) return 0;
while(getline(myfile, line)) number_of_lines++;
srand(time(NULL));
int rand_val = rand() % number_of_lines;
myfile.clear();
myfile.seekg (0, myfile.beg);
for(int i = 0; i < rand_val; i++) getline(myfile, line);
cout << line << endl;

system("pause");
}

0
loleq1111 napisał(a):

Mam taki kod ale pokazuje mi błędy i wyświetla ...
Chrzani waść, jak pokazuje błędy to nie wyświetla.

loleq1111 napisał(a):

... wyświetla tylko 1 linię ...
A czego się spodziewałeś po kodzie:

cout<<line<<endl;

? Spodziewałeś się że odczyta twoje myśli i wyświetli tyle wierszy ile pomyślałeś?

0

Nie. Wiem że nie mam jeszcze tego napisane. Chodziło mi póki co o pokazanie linii wybranych przeze mnie np tylko 6 lub 13, losowe z pośród podanych liczb. Na tych liniach znajdują się pytania quizu.

0

albo w ten sposób:

Losowanie liczb podanych np 1,4,6 (bo są tam pytania) i realizacja dolnego kodu:

int nr_linii=(nr_pytania-1)*6+1;
int aktualny_nr=1;
string linia;

while(getline(plik,linia))

{
if(aktualny_nr==nr_linii) tresc=linia;
if(aktualny_nr==nr_linii+1) a=linia;
if(aktualny_nr==nr_linii+2) b=linia;
if(aktualny_nr==nr_linii+3) c=linia;
if(aktualny_nr==nr_linii+4) d=linia;
if(aktualny_nr==nr_linii+5) poprawna=linia;
aktualny_nr++;
}

0

Zacznij od poprawnego załadowania pliku do pamięci:

struct Ask
  {
   string tresc,a,b,c,d;
   char poprawna;
   friend ifstream &operator>>(ifstream &f) { return getline(getline(getline(getline(getline(plik>>ws,tresc)>>ws,a)>>ws,b)>>ws,c)>>ws,d)>>ws>>poprawna>>ws; }
  };
vector<Ask> Tb;
Ask value;
while(plik>>value) Tb.push_back(value);

1 użytkowników online, w tym zalogowanych: 0, gości: 1