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

Sczytywanie danych z plików tekstowych do list

Ostatnio zmodyfikowano 2018-01-21 22:46
Autor Wiadomość
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.
P-168843
YooSy
» 2018-01-19 21:25:23
Pokaż co masz.
Pokaż fragment plików.
P-168844
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
C/C++
int pozycja
string czas
int nrStartowy
string nazwisko

while( plik >> pozycja >> czas >> nrStartowy >> nazwisko ) {
    // obróbka danych
}
P-168850
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.
C/C++
string separator = ",";
string linianazwa, liniadata, n1, n2, nazw, cza;
int a, b;

getline( plik1, linianazwa );
getline( plik1, liniadata );

while( !plik1.eof() )
{
    plik1 >> a; //sciąga niepotrzebne dane
    plik1 >> n1; //sciąga przecinek
    plik1 >> nazw;
    nazw = nazw.substr( 0, nazw.find( separator ) );
    nazw += ".txt";
    plik1 >> b; //sciąga niepotrzebne dane
    plik1 >> n2; //sciąga przecinek
    plik1 >> cza;
   
    if( glowa == nullptr )
    {
        glowa = new all;
        glowa->nazwisko = nazw;
        glowa->czas = cza;
        glowa->nast = nullptr;
    }
   
    // pozostałe przypadki listy

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ąć?
P-168896
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.
P-168901
« 1 »
  Strona 1 z 1