C++ wczytywanie i zapisywanie wierszy do pliku. Mały problem.

0

Mam tu taki mały problem, a mianowicie chodzi o program, który w pliku o 200 wierszach (5 wyrazów oddzielone spacjami w każdym wierszu) wyszukuje te wiersze, w którym wyrazy mają tyle samo liter. Wszystko ładnie już zrobione tylko problem mam w tym, żeby te wiersze, w którym długość słów jest taka sama były zapisywane do pliku, zamiast wypisywać w konsoli "tak". Bardzo proszę tylko o dopisanie linijki kodu, żeby program chodził prawidłowo. Męczyłem się z getline, ale mi nie wychodziło:).

Oto całość kodu: http://www.nopaste.pl/13dm

0

getline jak sama nazwa wskazuje pobiera linię. Po prostu zamiast cout daj wy.

0

Zauważyłem w kodzie, że zmieniasz zmienną iteracyjną (a), żeby przerwać pętlę. Nie jest to dobra praktyka. Lepiej użyć instrukcji break.

Pozdrawiam.

0

Próbowałem wy<<plik.getline(xxx)<<endl; wiele razy, tylko nie mam pojęcia co podać jako argumenty tej funkcji getline, żeby poprawnie chodziło. Czy mógłby ktoś mi napisać całą tą linijkę:). Serrus dzięki za radę na pewno już będę już korzystał z instrukcji break :).

0

są dwa getline'y: funkcja globalna i metoda w klasie stream. pierwsza operuje na stringu, druga na char*.
PS. jest jeszcze trzeci, w standardzie POSIX, z automatyczną alokacją pamięci pod char*.

0

Widze ze robisz zadanie z matury :), mam zrobione zadania z matur gdzies na mailu na 6 z programowania. Jak bedzie problem to moge rzucic kawalkiem kodu na priv ;p

0

Yo! Jeżeli dobrze zrozumiałem to co napisałeś, to żeby w Twoim kodzie dodać wypisywanie całych wierszy, które spełniają kryterium, musiałbyś dodać tablice w której te słowa zapamiętasz. Nudzę się dziś, więc wyczarowałem trochę kodu. Jeżeli chcesz sam do tego dojść to nie zaglądaj w link ;)

http://www.nopaste.pl/13fb

0

@up: źle obsługujesz koniec pliku, poczytaj dokładnie jak działa eof(), to powinno być czymś w tym stylu:

void cw3() {
    ifstream in("tekst.txt");
    ofstream out("odpowiedz.txt");
    string linia;
    while(getline(in, linia)) {
        istringstream slinia(linia);
        string slowo;
        while(linia >> slowo) {
              ...
        }
    }
}
0

Wielkie dzięki Ateal. Rozwiązałem swój problem dokładnie tak jak mówiłeś, ale Twój kod jest o wiele "łatwiejszy" dla oka:). Arasso12 masz racje zadanie z maturki, jak nie będę jakiegoś zadania pewny po napiszę do Ciebie to najwyżej mi podeślesz:). Tylko jak dla mnie trochę mało czasu na napisanie dwóch programów w 50 min, gdzie ten to jest łatwiejszy. Dzięki wszystkim za zainteresowanie tematem.

@Arasso12 i innych co pisali maturę z infy: Pisałeś może maturę z infy? Jak Ci poszła? I z czego się uczyłeś? Chodzi oczywiście o poziom rozszerzony.

0

Ja pisałem maturę z infy rok temu i udało mi się wyciągnąć 93 punkciory. Zjedli mi punkty za accesa. Większości nauczyli mnie na informatyce, co może być rzadko spotykane ;) Rozmawiając o maturze nie offtopujemy za bardzo ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0