Dybusek Temat założony przez niniejszego użytkownika |
Wczytywanie danych do tablicy. » 2010-01-24 14:13:57 Witam! Mam problem z wczytywaniem danych do tablicy. Mianowicie chodzi mi o to, że mam dane w takiej postaci: 32.5 155 -200 24.8 478 198 321 -487 54 1.4 18 -489 224 254 125 20 287 -69 -198 165 200 9.8 16 38.5 245 198 212 74 17 49.8 94 265 -248 257 159 24 14 18 I chcę sobie zapisać je do tablicy w takiej postaci w jakiej są w pliku. Problem polega na tym, że nie wiem jaki warunek wpisać w pętli. Oto fragment kodu: while( !plik.eof() ) { while( ) { plik >> dane[ i ][ j ]; j++; } i++; } Z góry dziękuję za pomoc. P.S. Chodzi mi o taki efekt: float tab[ 6 ][ 10 ] = { { 32.5, 155, - 200, 24.8 }, { 478, 198, 321, - 487, 54, 1.4, 18 }, { - 489, 224, 254, 125, 20 }, { 287, - 69, - 198, 165, 200, 9.8, 16 }, { 38.5, 245, 198, 212, 74, 17 }, { 49.8, 94, 265, - 248, 257, 159, 24, 14, 18 } }; |
|
malan |
» 2010-01-24 19:22:28 Gdybyś wiedział ile dokładnie jest liczb w każdym wierszu mógłbyś użyć fscanf. W przeciwnym wypadku możesz wczytać jeden wiersz z pliku, następnie napisać funkcję, która odczyta Ci każdą z liczb, zamieni std::string (lub char) na int i zapisze do tablicy. |
|
Dybusek Temat założony przez niniejszego użytkownika |
» 2010-01-24 23:05:32 Dzięki za info malan. Ale mam dalej mały problem. Pisząc funkcję rozdzielającą stringa na pojedyncze "liczby" pojawia się problem. Mianowicie funkcja nie wyszukuje mi ostatniej "liczby" z linii. Oto treść funkcji: string konwersja( string linia ) { string liczba = ""; for( int i = 0; i < linia.length(); i++ ) if( linia[ i ] != ' ' ) liczba += linia[ i ]; else { cout << liczba << " "; liczba = ""; } return ""; }; Jeżeli do w pliku dodam na końcu każdej linii spację to wszystko jest ok. Wiem, że jest to wina źle zapisanego warunku w instrukcji if. Wiecie może jak go zmienić żeby działało poprawnie ? |
|
malan |
» 2010-01-24 23:29:36 Zgadza się - w warunku czegoś brakuje. Zastanawiałeś się jak algorytm powinien się zachować w przypadku, gdy w wierszu będzie jedna liczba, np. 13 ? Do jakiego momentu powinien "odczytywać" liczbę ? |
|
Dybusek Temat założony przez niniejszego użytkownika |
» 2010-01-25 00:04:39 Ok doszedłem do rozwiązania. Dzięki za pomoc. Oto kod: string konwersja( string linia ) { string liczba = ""; for( int i = 0; i <= linia.length(); i++ ) if( linia[ i ] != ' ' && i < linia.length() ) liczba += linia[ i ]; else { cout << liczba << " "; liczba = ""; } return ""; }; |
|
« 1 » |