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

Wczytywanie z pliku do macierzy dwuwymiarowej problem z licznikiem petli

Ostatnio zmodyfikowano 2013-12-14 15:59
Autor Wiadomość
mared
Temat założony przez niniejszego użytkownika
Wczytywanie z pliku do macierzy dwuwymiarowej problem z licznikiem petli
» 2013-12-14 15:02:36
Witam robię projekt na uczelnie siedzę nad tym problemem od wczoraj i nie wiem co jest grane.
Zamysł jest dosyć prosty mam plik slowa.txt w którym przyjąłem na poczatku

abababab
cdcdcdcd


słowa mogą mieć max 8 znaków.
Chce zrzucić te słowa z pliku do tablicy dwuwymiarowej,ponieważ później muszę posortować je przez zliczanie po indeksach wystąpień.
Problem pojawia się przy tym,że wczytuję znak po znaku i nęka mnie znak nowej linii dlatego dodałem odpowiedni warunek z instrukcją break.Jednak nie zwiększa mi przy tym j.Mimo,że powinien wyjść z jednej pętli i wejść w drugą zwiększając j.

 
C/C++
char znak; // zmienna pomocnicza
int i, j;
fstream plik;
plik.open( "slowa.txt", ios::in );
if( plik.good() )
{
    cout << "Zawartosc pliku:" << endl;
   
    while( !plik.eof() )
    {
        for( j = 0; j < 2; j++ )
        {
            for( i = 0; i <= 7; i++ )
            {
                plik.get( znak );
                if( !plik ) break;
               
                if( znak != '\n' )
                {
                    tablica[ i ][ j ] = znak;
                   
                }
                else
                {
                    break;
                }
                cout << tablica[ i ][ j ];
                cout << " i: " << i << " j: " << j << endl;
            }
        }
        cout << endl;
    }
    cout << tablica[ 0 ][ 0 ];
    cout << tablica[ 2 ][ 0 ];
    cout << tablica[ 2 ][ 1 ];
    plik.close();
}
else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

P-99188
leon_w
» 2013-12-14 15:29:02
Spróbuj continue zamiast break.
P-99193
mared
Temat założony przez niniejszego użytkownika
» 2013-12-14 15:31:40
Zwiększyło się j jednak i zamiast od 0 zaczyna się od 1 przez co wszystko się przesuwa ;/
P-99194
leon_w
» 2013-12-14 15:39:15
Pewnie znak nowego wiersza w buforze zostaje. Albo spróbuj wyczyścić bufor, albo daj i=-1. Takie prowizoryczne rozwiązanie, ale działa :P.
P-99197
mared
Temat założony przez niniejszego użytkownika
» 2013-12-14 15:44:59
fflush( stdin );
uzylem nic to nie zmienilo

sync() rowniez ;/ wiec chyab to nie to :(
P-99198
leon_w
» 2013-12-14 15:55:29
Pomogło też zmiana liczby w warunku w pętli z 7 na 8.  Nawet Twoja pierwsza wersja dobrze z tym działa.
W sumie do zczytania znaku nowego wiersza potrzebny 8-my obieg petli (w sumie 9-ty).
P-99200
mared
Temat założony przez niniejszego użytkownika
» 2013-12-14 15:59:43
ooo faktycznie ;) wtedy i=8 zajmuje biały znak i dalej idzie dobrze.Super :) Dzięki!
P-99201
« 1 »
  Strona 1 z 1