Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

losowanie z pliku

Ostatnio zmodyfikowano 2016-02-05 14:38
Autor Wiadomość
darson
Temat założony przez niniejszego użytkownika
losowanie z pliku
» 2016-02-04 22:02:39
Hej!
Proszę o wyrozumiałość, iż jest to mój pierwszy temat tutaj.

Borykam się z następującym problemem: tworzę prosty programik o nazwie test, posiadam plik txt z którego ów test będzie zasysał pytania, jednak pytań jest 100 a ja chciałabym ustawić ich losowanie na 10 z tego pliku. Jak to zrobić bez wczytywnia ich do tablicy? (zakaz od prowadzącego ćwiczenia). Czy lepiej wykorzystać plik binarny zamiast txt?

Dziękuję za pomoc :)
P-144469
mateczek
» 2016-02-04 22:07:31
pytanie zasadnicze. Czy plik z pytaniami masz dany (format zapisu pytań określony) czy możesz sam sobie go stworzyć ??
P-144470
darson
Temat założony przez niniejszego użytkownika
» 2016-02-04 22:09:22
sama mogę sobie stworzyć plik- w ćwiczeniu bardziej chodzi o całościowy pogląd na temat Test z danego przedmiotu
P-144471
jankowalski25
» 2016-02-04 22:11:06
P-144472
darson
Temat założony przez niniejszego użytkownika
» 2016-02-04 22:15:30
ok, dzieki za ta lekcje
ale przy ustaleniu przesuwania pozycji przy każdym otworzeniu programu i przystapieniu do testu, a wiec wczytaniu danych z pliku beda wyswietlaly mi się te same pytania, prawda?
P-144473
jankowalski25
» 2016-02-04 22:25:11
Jeśli zamierzasz "na sztywno" wklepać pozycje poszczególnych pytań, to przy każdej zmianie zawartości pliku będziesz musiał je zmieniać w programie. Wszystko zależy od formatu pliku. Jeśli pytania są oddzielone znakami nowej linii, to szukasz tych znaków i na podstawie tego ustalasz poszczególne pozycje.
P-144474
mateczek
» 2016-02-05 11:35:49
moja propozycja !!!
Przykłądowy plik z pytaniami - każde pytanie w jednej linijce!!!

jak masz na imię?
jaki jest twój ulubiony kolor?
jaki jest twój ulubiony kwiat?
czy lubisz piwo?
jaki jest twój nr telefonu?
ile Ala ma kotkow?
dlaczego Alicja woli tygrysy?
Jaka jest Alicja i dlaczego niegrzeczna?

C/C++
#include <iostream>
#include<fstream>
#include<ctime>

using namespace std;

int main()
{
    srand( time( NULL ) );
    std::fstream plik;
    plik.open( "dane.txt", ios::in );
    if( !plik.good() ) return 0;
    // wydaje mi się że i tak na początku trzeba cały plik przelecieć choćby po to by sprawdzić
    // ile tam jest pytań w tym pliku !!! ile linijek zajmuje ?? - więc dlaczego przy okazji nie zapisać wskaźników na początek pytania!!!
    int pytpos[ 100 ]; // pozycje poszczególnych pytań . początek każdego pytania
    string pytanie; int iloscPytan = 0; int nrPytan = 0;
    while( 1 ) { //indeksowanie pliku znajdowanie początków linii - do poprawy bo trochę przekombinowałem
        if( plik.eof() ) break;
       
        int tempPos = plik.tellg(); // pobieramy aktualny wskaźnik
        getline( plik, pytanie ); // odczytujemy pytanie-wskaźnik nam się przesunie na następne pytanie
        pytpos[ nrPytan ] = tempPos; // zapis początku pytania do tablicy
        nrPytan++; // 
    }
    iloscPytan = nrPytan - 1;
    plik.clear();
   
    // przykładowe jedno losowanie pytania z pliku.
    int nrPyt = rand() % iloscPytan;
    plik.seekg( pytpos[ nrPyt ], plik.beg ); // ustawiamy wskaźnik pliku na początku wylosowanego pytania
    getline( plik, pytanie ); // pobieramy pytanie
    cout << "pytanie nr " << nrPyt << " " << pytanie << endl; // pytanie na ekran
}
P-144494
darson
Temat założony przez niniejszego użytkownika
» 2016-02-05 14:38:02
super! super! wielkie dzięki :)

troszkę to zmodyfikuję, bo plik pytania zawiera również 3 odpowiedzi a, b, c i w 5 linijce odpowiedź poprawną, ale jest suuuuper :D

dzięki jeszcze raz :)
P-144503
« 1 »
  Strona 1 z 1