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. |
|
ForExample Temat założony przez niniejszego użytkownika |
» 2016-09-04 13:12:32 Mogę prosić jeszcze o pomoc? 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 ) { 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. 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. |
|
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... |
|
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? |
|
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). |
|
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... |
|
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. |
|
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ść? |
|
1 « 2 » 3 |