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

Wczytywanie danych do tablicy.

Ostatnio zmodyfikowano 2010-01-25 00:04
Autor Wiadomość
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:

C/C++
while( !plik.eof() )
{
    while( /*nie wiem co tu wpisać*/ ) { plik >> dane[ i ][ j ]; j++; }
    i++;
}
Z góry dziękuję za pomoc.

P.S. Chodzi mi o taki efekt:
C/C++
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 }
};
P-13266
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.
P-13271
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:
C/C++
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 ?
P-13280
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ę ?
P-13281
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:
C/C++
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 "";
};
P-13284
« 1 »
  Strona 1 z 1