• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wczytywanie z pliku txt,problem z sumowaniem danych

Object Storage Arubacloud
0 głosów
140 wizyt
pytanie zadane 30 kwietnia 2016 w C i C++ przez Avalon Obywatel (1,130 p.)

Witam wszystkich forumowiczów :)

Mam problem z programem który wczytuje dane z pliku, a następnie sumuje wszystkie liczby jakie w nim występują.Program działa poprawnie jeśli po ostatniej liczbie jest spacja, natomiast jeśli jej nie ma program pomija ostatnią liczbę np: 98 102, jeśli po 102 nie ma spacji wynikiem będzie 98, nie 200.Czy ktoś może mi powiedzieć jaki robię błąd(Nie zwracajcie uwagi na brak sprawdzania czy plik się otworzył, na składnie kodu itd. Przypominam sobie po prostu pracę z plikami)

O to kod:

#include <iostream>
#include <fstream>
using namespace std;
long long loadfile(string);
int main()
{
    string name;
    cout<<"Wpisz nazwe pliku: ";
    cin>>name;
    cout<<"Suma wynosi: "<<loadfile(name);;
    return 0;
}
long long loadfile(string nazwa)
{
    fstream file;
    file.open(nazwa.c_str());
        int sum=0;
        int bufor;
    while(true)
    {
      file>>bufor;
      if(file.good())
              sum+=bufor;
      else {return sum; file.close();}
    }


}

Z góry dziękuje za pomoc.

1 odpowiedź

+1 głos
odpowiedź 30 kwietnia 2016 przez criss Mędrzec (172,590 p.)
wybrane 30 kwietnia 2016 przez Avalon
 
Najlepsza

Bo do sumy dodajesz tylko jeśli .good() zwróci true. Przy ostatniej liczbie ustawiona jest już flaga eof, więc .good() zwróci już false.

Btw. pewnie ci wyrzuca error, że funkcja nie zawsze coś zwraca i ma racje. Wywal ten return za pętle po prostu. Nie bardzo też rozumiem dlaczego deklarujesz zwracanie long long, a sum jest intem.

I file.close() - po pierwsze nigdy się nie wykona, a po drugie jest niepotzrebne (zrobi do destruktor fstream).

komentarz 30 kwietnia 2016 przez Avalon Obywatel (1,130 p.)
W jaki sposób więc wczytać tę ostatnią liczbę?
komentarz 30 kwietnia 2016 przez criss Mędrzec (172,590 p.)
do
{
...
} while(file.good());

Powinno zadziałać.

komentarz 30 kwietnia 2016 przez Avalon Obywatel (1,130 p.)
Rzeczywiście, wielkie dzięki :)
komentarz 30 kwietnia 2016 przez criss Mędrzec (172,590 p.)
O, jak działa to super, bo nie miałem 100% pewności :D

Podobne pytania

0 głosów
1 odpowiedź 344 wizyt
+1 głos
0 odpowiedzi 312 wizyt
pytanie zadane 27 lipca 2021 w Python przez Mocaz Użytkownik (560 p.)
0 głosów
1 odpowiedź 996 wizyt

92,548 zapytań

141,391 odpowiedzi

319,512 komentarzy

61,932 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...