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

Wczytywanie liczb z pliku textowego operatorem >>

Ostatnio zmodyfikowano 2016-09-04 15:16
Autor Wiadomość
ForExample
Temat założony przez niniejszego użytkownika
» 2016-09-03 19:54:48
Oczywiście poznam, ale jednak chciałbym wszystko w swoim czasie :) I poza tym co znaczy "UB" w przedostatnim Twoim zdaniu..? Poza tym juz prawie wszystko jest ok, ale tak jakby łapie mi o jedna liczbe za duzo.
P-151408
ForExample
Temat założony przez niniejszego użytkownika
» 2016-09-04 13:12:32
Mogę prosić jeszcze o pomoc?
C/C++
void load_numbers( string const file )
{
    fstream filex;
    filex.open( file );
    int i = 0, x;
    if( !filex.good() )
    {
        cerr << "Nie udalo sie otworzyc pliku" << endl;
        exit( 0 );
    }
    else
    {
        int tablica[ 400 ];
       
        while( true ) // <---- myœle, ¿e tylko ten warunek jest mi potrzebny i bedzie dobrze
        {
            if( !( filex >> tablica[ i ] ) )
                 break;
           
            i++;
        }
       
        cout << i << endl;
        cout << tablica[ 16 ] << endl;
        cout << tablica[ i ];
    }
    filex.close();
}
Myślałem, że kod jest już prawidłowy, ale w moim pliku tekstowym jest 17 liczb, a na koncowym sprawdzaniu tj.
C/C++
cout << i << endl;
cout << tablica[ 16 ] << endl;
cout << tablica[ i ];
 program wskazuje, ze i = 17, a tablica[17] = 2, gdzie nie ma tam zadnej dwojki... ostatnia liczba jest tablica[16] = 46, co jest pokazane prawidlowo... Gdzie moze być problem? Dodam jeszcze, ze w pliku tekstowym nie ma zadnego tekstu, tylko różne liczby oddzielone spacjami.
P-151413
carlosmay
» 2016-09-04 13:22:50
program wskazuje, ze i = 17, a tablica[17] = 2, gdzie nie ma tam zadnej dwojki...
Twoja tablica jest zainicjalizowana przypadkowymi wartościami. Element siedemnasty nie został nadpisany liczbami z pliku,
więc tam może być wszystko (aktualnie jest 2).

Zainicjalizuj tablicę zerami i zobacz wynik.
int tablica[ 400 ] { };

Poza tym, tak wielka tablica dla 17 liczb? Hmmm...
P-151414
ForExample
Temat założony przez niniejszego użytkownika
» 2016-09-04 13:48:05
Tablica jest tak wielka, aby program dzialal dla roznych plikow tekstowych. I właśnie w tym rzecz, co musze zrobic, aby tablica skonczyła sie wypełniac po wczytaniu wszystkich liczb z pliku?
P-151415
carlosmay
» 2016-09-04 13:54:20
Tablica jest tak wielka, aby program dzialal dla roznych plikow tekstowych.
Rozwiązanie co najmniej dziwne.

co musze zrobic, aby tablica skonczyła sie wypełniac po wczytaniu wszystkich liczb z pliku?
Tablica przestaje się wypełniać, gdy odczytasz plik. Po prostu nie sięgaj poza elementy wczytane.

Zwykłych tablic (o ustalonym rozmiarze) używamy, gdy z góry wiemy ile jest danych w pliku.
Jeśli ilość danych nie jest znana stosuje się tablice dynamiczne (ustalanie rozmiaru w czasie działania programu).

P-151417
ForExample
Temat założony przez niniejszego użytkownika
» 2016-09-04 14:00:47
Przepraszam, jestem troche poczatkujacy...
"Tablica przestaje się wypełniać, gdy odczytasz plik. Po prostu nie sięgaj poza elementy wczytane.".. co masz na myśli, nie rozumiem do końca jak mam postąpić w związku z tym...
P-151418
carlosmay
» 2016-09-04 14:09:50
co masz na myśli, nie rozumiem do końca jak mam postąpić w związku z tym...
Wczytujesz siedemnaście liczb, więc odczytuj z tablicy nie dalej jak do szesnastego elementu.
P-151419
ForExample
Temat założony przez niniejszego użytkownika
» 2016-09-04 14:15:18
Ok, ale chciałbym aby to działało z perspektywy kogoś kto nie wie ile jest tam elementów, czyli nie mogę z gory założyc w kodzie ile liczb ma wczytać. Co w takim razie zrobić, aby wczytać ich akurat odpowiednią ilość?
P-151420
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona