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

[Lekcja 33] Suma liczb = 0 .

Ostatnio zmodyfikowano 2014-10-28 21:36
Autor Wiadomość
Mixon
Temat założony przez niniejszego użytkownika
[Lekcja 33] Suma liczb = 0 .
» 2014-10-28 18:57:46
Cześć. Napisałem program, w którym cały czas suma liczb (pobranych z pliku tekstowego) jest równa 0.

Zadanie: Otwórz plik tekstowy, w którym będą znajdowały się tylko liczby całkowite, oddzielone od siebie spacjami. Następnie napisz PROGRAM, który wczyta wszystkie liczby z pliku i wypisze sumę wszystkich liczb na standardowym wyjściu.

C/C++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

bool suma( string lokalizacja )
{
    ifstream plik;
    plik.open( lokalizacja.c_str() );
    if( !plik.good() )
         return false;
   
    int n = 0, a;
    while( true )
    {
        plik >> a;
        if( plik.good() )
             n += a;
        else break;
       
    }
    cout << "Suma jest rowna: " << n << endl;
    return true;
}


int main()
{
    if( suma( "liczby.txt" ) == false )
         cout << "Nie znaleziono pliku" << endl;
   
    return 0;
}
P-119584
pekfos
» 2014-10-28 19:21:04
Masz tam więcej niż jedną liczbę? Kodowanie pliku zawiera BOM, lub coś podobnego?
P-119585
Mixon
Temat założony przez niniejszego użytkownika
» 2014-10-28 19:56:23
Racja. Miałem tylko jedna liczbę. Dzięki ;)
Dodałem ich kilka do pliku tekstowego i zauważyłem, że nie sumuje ostatniej liczby. Czym to jest spowodowane i jak mógłbym zmodyfikować kod by program czytał wszystkie liczby?
P-119587
Monika90
» 2014-10-28 20:35:47
C/C++
int a = 0;
int n = 0;
while( plik >> a )
     n += a;

i to wszystko
P-119593
Mixon
Temat założony przez niniejszego użytkownika
» 2014-10-28 21:25:27
Ok. Poprawiony kod działa poprawnie. Lecz cały czas męczy mnie fakt dla czego mój pierwotny kod źle działa. Zauważyłem, że jeśli w pliku tekstowym po ostatniej liczbie wpiszemy spacje, to poprawnie ja wczytuje, jeśli spacji nie będzie po liczbie to niepoprawnie (mówię o sytuacji przy moim pierwotnym programie). Wiecie może dla czego tak się dzieje?
P-119599
pekfos
» 2014-10-28 21:30:13
Bo good() nie jest równoznaczne z !fail(). Różni się to jednym, tego typu przypadkiem.
P-119600
Mixon
Temat założony przez niniejszego użytkownika
» 2014-10-28 21:36:32
Ok. Warto to zapamiętać. Dzięki wielkie! ;)
P-119602
« 1 »
  Strona 1 z 1