Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dev C++ problem z sumowaniem liczb z pliku

Ostatnio zmodyfikowano 2013-03-31 11:23
Autor Wiadomość
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:
C/C++
#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.
P-79655
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.
P-79656
« 1 »
  Strona 1 z 1