Rudini Temat założony przez niniejszego użytkownika |
Sczytywanie danych z plików tekstowych do list » 2018-01-19 20:15:16 Witam, mam problem z takim oto zadaniem: mam kilka plików z zawodami postaci:
Nazwa zawodów Data zawodów Pozycja, nazwisko zawodnika, nr. startowy, czas (w formacie gg:mm:ss) Pozycja, nazwisko zawodnika, nr. startowy, czas (w formacie gg:mm:ss) ...
w których jest wpisanych po kilku zawodników, w każdym z plików różna ilość. Program ma utworzyć dla każdego nazwiska plik tekstowy postaci:
Nazwisko zawodnika Data zawodów, nazwa zawodów, czas Data zawodów, nazwa zawodów, czas ... (Zawody posortowane są wg daty.)
Problem pojawia się w momencie, w którym chce sczytać dane z plików z zawodami. Nazwę i datę mogę sczytać getline() i przekazać do struktur. Z czasem i nazwiskiem mam ten problem, że nie znam ilości zawodników w plikach z zawodami i nie wiem jak sczytać zmienną ilość danych. Myślałem o pętli, ale nie radzę sobie wtedy z wpisywaniem tego do struktur. |
|
YooSy |
» 2018-01-19 21:25:23 Pokaż co masz. Pokaż fragment plików. |
|
mateczek |
» 2018-01-20 07:14:38 1. wklej fragment pliku 2 dla pliku jak poniżej 1 1:43:2 234 kowalski 2 1:3:23 123 psikuta
powinien wystarczyć taki kod int pozycja string czas int nrStartowy string nazwisko
while( plik >> pozycja >> czas >> nrStartowy >> nazwisko ) { } |
|
Rudini Temat założony przez niniejszego użytkownika |
» 2018-01-21 20:57:09 1. Dwa przykładowe pliki. Ilość plików, tak jak dla linii z zawodnikami może być dowolna, z tym, że na razie chcę ogarnąć to dla skończonej ilości plików i dowolnej zawodników. Bieg IT 2016-11-09 2, Krol, 12, 03:47:12 1, Anders, 290, 03:40:11
|
Bieg Rzeznika 2011-05-02 3, Krol, 110, 03:52:17 1, Papaj, 23, 03:37:40 2, Zagrzeb, 63, 03:40:25
|
Fragment kodu z wpisywaniem do list - reszty kodu wole póki co nie wklejać bo to jest tragedia i bałagan. string separator = ","; string linianazwa, liniadata, n1, n2, nazw, cza; int a, b;
getline( plik1, linianazwa ); getline( plik1, liniadata );
while( !plik1.eof() ) { plik1 >> a; plik1 >> n1; plik1 >> nazw; nazw = nazw.substr( 0, nazw.find( separator ) ); nazw += ".txt"; plik1 >> b; plik1 >> n2; plik1 >> cza; if( glowa == nullptr ) { glowa = new all; glowa->nazwisko = nazw; glowa->czas = cza; glowa->nast = nullptr; }
Jeszcze mam problemy z listami podwieszanymi, ale dopiero jutro wrzucę co mam i z czym jest problem. Dobrze ogarnąłem spisywanie z danych z pliku czy można to jakoś ładniej ogarnąć? |
|
YooSy |
» 2018-01-21 22:46:48 Podziel kod mniejsze fragmenty (funkcje, struktury) i nie ucz się do początku wszystkiego ładować do funkcji głównej. Szybciej pojmiesz co robi dany fragment.
Do czytania danych z pliku możesz użyć funkcji std::getline() z terminatorem. Skrócisz kod odczytu danych z pliku. |
|
« 1 » |