Dev C++ problem z sumowaniem liczb z pliku
Ostatnio zmodyfikowano 2013-03-31 11:23
ziombel3 Temat założony przez niniejszego użytkownika |
Dev C++ problem z sumowaniem liczb z pliku » 2013-03-31 11:07:17 Witam. Mam problem z zsumowaniem liczb z pliku. Plik wygląda tak: 4 6 12 15 5 8
Ma nieuporządkowaną strukturę. Kod programu: #include <iostream> #include <cstdio> #include <fstream> #include <cstdlib> using namespace std; int main( int argc, char * argv[] ) { int suma = 0, a; ofstream zapis( "wynik.txt" ); ifstream otworz( "liczby.txt" ); while( !otworz.eof() ) { otworz >> a; if( otworz && isdigit( a ) ) { suma = suma + a; } } otworz.close(); cout << suma; zapis << suma; zapis.close(); return 0; } Problemem jest nawias if (otworz && isdigit(a)). Wynik wyświetla się jako 0. Natomiast gdy zamiast isdigit(a) wstawię isalpha(a) lub isalnum(a) lub całkowicie to wywale to wynik jest poprawny. Dlaczego tak jest? Program działa, ale gdyby w pliku były też literki to program się zawiesi, bo próbuje zsumować litery z liczbami. Przepraszam za brak odpowiedniego kodowania ale nie pamiętam jak to się robiło. |
|
pekfos |
» 2013-03-31 11:23:23 isdigit(), tak jak wszystkie funkcje isX z cctype przyjmują kod znaku, a nie liczbę. Btw: Jaki sens pobierać z cin liczbę i sprawdzać czy jest to liczba? Program działa, ale gdyby w pliku były też literki to program się zawiesi, bo próbuje zsumować litery z liczbami. |
Zawiesi się, ale z innej przyczyny. |
|
« 1 » |