Lekcja 34 -problem z sumą
Ostatnio zmodyfikowano 2015-01-07 12:58
legionista Temat założony przez niniejszego użytkownika |
Lekcja 34 -problem z sumą » 2015-01-06 20:25:53 Witam, wyliczenie sumy w poniższym zadaniu mnie przerosło, nie rozumiem czemu wychodzą mi kosmiczne liczby, po usunięciu sumy wszystko działa jak trzeba wczytywanie liczb przebiega popranie #include <string> #include <fstream> #include <iostream>
bool odczytajPlik( std::string sNazwaPliku, int suma ) { std::ifstream plik; plik.open( sNazwaPliku.c_str() ); if( !plik.good() ) { std::cout << "Nie udalo sie otworzyc pliku." << std::endl; return false; } while( !plik.eof() ) { int iLiczba; plik >> iLiczba; suma = suma + iLiczba; if( plik.fail() ) { plik.clear(); char cZnak; plik >> cZnak; if( plik.fail() ) break; } else std::cout << iLiczba << " " << std::endl; std::cout << suma; } }
int main() { int suma = 0; if( odczytajPlik( "flagi.txt", suma ) ); std::cout << "Plik zostal wczytany!" << std::endl; return 0; } |
|
darko202 |
» 2015-01-07 08:24:08 w linii suma = suma + iLiczba; używasz zmiennej iLiczba, której wartość jest nieznana (sprawdź czy była zainicjalizowana) prawdopodobnie jakaś zmienna globalna - używanie takich zmiennych jest niewskazane bo prowadzi często do trudnych do zdiagnozowania błędów, a najczęściej (99,9%) nie są konieczne.
|
|
legionista Temat założony przez niniejszego użytkownika |
» 2015-01-07 11:41:10 Czemu iLiczba jest nie znana czy nie jest to liczba, która został odczytana z pliku ? int iLiczba; plik >> iLiczba; suma = suma + iLiczba; |
|
darko202 |
» 2015-01-07 12:58:38 Sorry, źle spojrzałem
podstawowe pytanie co masz faktycznie w pliku i co jest wczytywane do zmiennej iLiczba
1. dodaj cout << iLiczba << "\n"; //najprostsze debugowanie programu
2. jeśli w plik >> iLiczba wczytujesz znak np. spacja (niewidoczny) to ma on jakiś kod ASCI, który po konwersji na typ int (niejawnej) ma jakąś wartość (nie pamiętam ile ale dla a, A mamy chyba 65, 95 ) i jak dodamy sobie N razy taką wartość to i zbierze się odpowiednia duża liczba
|
|
« 1 » |