rozdzial 33 - problem z zadaniem
Ostatnio zmodyfikowano 2015-09-13 01:38
progx100 Temat założony przez niniejszego użytkownika |
rozdzial 33 - problem z zadaniem » 2015-09-12 23:08:07 Witam mam problem, gdyż z pliku tekstowego nie czyta mi ostatniego wersa i tak sie dzieje za kazdym razem czy dodam nowy wers do pliku czy odejmę, program wylicza mi sumę liczb ze wszyskich wersów prócz ostatniego oto kod:
#include <fstream> #include <iostream> #include <string>
bool wczytajPlik( std::string nazwaPliku ) { std::ifstream plik; plik.open( nazwaPliku.c_str() ); if( !plik.good() ) return false; int suma = 0; while( true ) { int a; int b; plik >> a >> b; if( plik.good() ) { suma+=a+b; } else break;
} std::cout<<"suma "<<suma<<std::endl; return true; }
int main() { if( !wczytajPlik( "C:/vv.txt" ) ) std::cout << "Nie udalo sie otworzyc pliku!" << std::endl;
return 0; }
|
|
carlosmay |
» 2015-09-13 00:00:22 Nie ta kolejność: plik >> a >> b; if( plik.good() ) { suma += a + b; }
Wpierw wczytujesz liczby, a później wykluczasz ostatni cykl dodawania, bo po wczytaniu masz koniec pliku, więc mimo pobrania liczb do zmiennych to if pomija dodawanie. |
|
progx100 Temat założony przez niniejszego użytkownika |
» 2015-09-13 01:19:01 dobra już rozwiązałem problem tak:
#include <fstream> #include <iostream> #include <string>
bool wczytajPlik( std::string nazwaPliku ) { std::ifstream plik; plik.open( nazwaPliku.c_str() ); if( !plik.good() ) return false; int suma = 0; int a; int b; while( plik >> a >> b ) { suma+=a+b; } std::cout<<"suma "<<suma<<std::endl; return true; }
int main() { if( !wczytajPlik( "C:/vv.txt" ) ) std::cout << "Nie udalo sie otworzyc pliku!" << std::endl;
return 0; }
|
|
carlosmay |
» 2015-09-13 01:35:32 Czemu wczytujesz dane parami, a jak w pliku będzie nieparzysta ilość liczb. |
|
progx100 Temat założony przez niniejszego użytkownika |
» 2015-09-13 01:38:34 poprawie, najwazniejszy problem już rozwiązany |
|
« 1 » |