Lekcja 34 - zadanie 2.
Ostatnio zmodyfikowano 2014-06-27 19:20
pekfos |
» 2014-06-26 19:48:08 Dlaczego nie poprawiłeś konkretnych błędów, które podałem? W ten sposób możemy ciągnąć ten temat bez żadnych efektów, bo zamiast poprawiać błędy, robisz program od nowa wprowadzając nowe błędy. |
|
Mateus. Temat założony przez niniejszego użytkownika |
» 2014-06-27 12:41:43 Spróbowałem zastosować się do twoich rad, ale nie wiem do czego teraz użyć funkcji bool czy( plik ) .
Kod:
#include <string> #include <fstream> #include <iostream> using namespace std; bool czy( ifstream & plik ) { char cZnak; for(;; ) { plik.clear(); cZnak = plik.peek(); if( plik.fail() || plik.bad() ) return false; if( !isspace( cZnak ) ) return false; plik.get( cZnak ); if( plik.fail() || plik.bad() ) return false; if( cZnak == '\n' ) return true; } } void funkcja( string sciezka ) { ifstream plik; plik.open( sciezka.c_str() ); int a; int i = 1; int suma; while( !plik.eof() ) { plik >> a; if( plik.fail() ) { i++; cout << "Napotkano blad w wierszu nr. " << i << endl; plik.clear(); char b; plik >> b; } else { i++; suma += a; } cout << suma << endl; suma = 0; } plik.close(); } int main() { funkcja( "C://Users//Mateusz//Documents//plik.txt" ); return 0; }
4499404
2
3
3
4
Napotkano blad w wierszu nr. 7
0
5
3
2
5
2
2
1
3
Napotkano blad w wierszu nr. 16
0
3
4
Naprawdę chciałbym, abyście wskazali mi co robię źle w tym kodzie, który pisałem od początku, ponieważ jedyne zastosowanie funkcji czy( plik ) , które przychodzi mi do głowy to to, które przedstawiłem w tym drugim kodzie, a z tym nie bardzo wiem co mam zrobić :( |
|
pekfos |
» 2014-06-27 14:21:30 Zamiast else ma być if(czy(plik)). Nie masz pominąć jednego znaku, lecz całą linię. while( !plik.eof() ) { plik >> a; cout << suma << endl; suma = 0; }
|
A tu aż szkoda gadać.. |
|
Mateus. Temat założony przez niniejszego użytkownika |
» 2014-06-27 14:56:47 #include <string> #include <fstream> #include <iostream> using namespace std; bool czy( ifstream & plik ) { char cZnak; for(;; ) { plik.clear(); cZnak = plik.peek(); if( plik.fail() || plik.bad() ) return false; if( !isspace( cZnak ) ) return false; plik.get( cZnak ); if( plik.fail() || plik.bad() ) return false; if( cZnak == '\n' ) return true; } } void funkcja( string sciezka ) { ifstream plik; string wiersz; plik.open( sciezka.c_str() ); int a; int i = 1; int suma; while( !plik.eof() ) { plik >> a; if( plik.fail() ) { cout << "Napotkano blad w wierszu nr. " << i << endl; plik.clear(); getline( plik, wiersz ); } if( czy( plik ) ) { suma += a; i++; cout << suma << endl; } suma = 0; } plik.close(); } int main() { funkcja( "C://Users//Mateusz//Documents//plik.txt" ); return 0; }
3
Napotkano blad w wierszu nr. 2
2
3
Napotkano blad w wierszu nr. 4
I znowu (z powodu mojej niewiedzy) nie działa :( Ehh... ciężkie jest życie uczącego się programowania. |
|
pekfos |
» 2014-06-27 15:19:27 Sumuj w samej pętli, a nie w ifie. |
|
Mateus. Temat założony przez niniejszego użytkownika |
» 2014-06-27 16:47:41 Próbowałem sumować chyba we wszystkich miejscach pętli (również poza if , ale efekt działania programu dalej jest taki sam :( |
|
pekfos |
» 2014-06-27 17:07:55 Sumuj poza warunkiem, zeruj sumę w warunku. |
|
Mateus. Temat założony przez niniejszego użytkownika |
» 2014-06-27 17:16:48 Teraz to dopiero się cuda dzieją. Może coś jeszcze robię źle kod:
#include <string> #include <fstream> #include <iostream> using namespace std; bool czy( ifstream & plik ) { char cZnak; for(;; ) { plik.clear(); cZnak = plik.peek(); if( plik.fail() || plik.bad() ) return false; if( !isspace( cZnak ) ) return false; plik.get( cZnak ); if( plik.fail() || plik.bad() ) return false; if( cZnak == '\n' ) return true; } } void funkcja( string sciezka ) { ifstream plik; string wiersz; plik.open( sciezka.c_str() ); int a; int i = 1; int suma; while( !plik.eof() ) { plik >> a; suma += a; if( plik.fail() ) { cout << "Napotkano blad w wierszu nr. " << i << endl; plik.clear(); getline( plik, wiersz ); } if( czy( plik ) ) { i++; cout << suma << endl; suma = 0; } } plik.close(); } int main() { funkcja( "C://Users//Mateusz//Documents//plik.txt" ); return 0; }
4499521
Napotkano blad w wierszu nr. 2
16
13
Napotkano blad w wierszu nr. 4
A to jest dobrze?
if( plik.fail() ) { cout << "Napotkano blad w wierszu nr. " << i << endl; plik.clear(); getline( plik, wiersz ); }
|
|
1 « 2 » 3 |