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

Sumowanie liczb z pliku.

Ostatnio zmodyfikowano 2013-03-31 19:16
Autor Wiadomość
pekfos
» 2013-03-31 11:33:31
da sie jakos wczytac do zmiennej liczbowej z pliku linijke w takim stylu
Całej linijki do jednego inta nie wczytasz. Możesz wczytywać przez operator >>, który automatycznie podzieli Ci linijkę na słowa.
P-79657
matid1234
Temat założony przez niniejszego użytkownika
» 2013-03-31 19:16:48
Witam ponownie.
@Monika90 <-- dzięki za rady, teraz wszystko działa jak należy, nie rozumiem jednak dwóch rzeczy: po pierwsze dlaczego notacja węgierska spowalnia kompilację skoro to tylko dopisuje jeden znak, a druga sprawa dlaczego Plik.clear(); i Plik.seekg( 0 ); musi być poza pętlą a nie np w niej.
Z góry dzięki za odpowiedź. Niżej wklejam działający kod - może komuś się przydać jeszcze.

C/C++
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int iSprawdzenie()
{
    ifstream Plik;
    string sNazwaPliku;
    do
    {
        cout << "Podaj nazwe pliku: ";
        cin >> sNazwaPliku;
        Plik.open( sNazwaPliku.c_str() );
        // ^ otwiera plik tekstowy podany przez uzytkownika
    }
    while( !Plik.good() ); //endwhile
   
    string sWiersz;
    cout << "Liczby do sumowania to:" << endl;
    while( getline( Plik, sWiersz ) )
         cout << sWiersz << "\n"; //endwhile
   
    Plik.clear();
    Plik.seekg( 0 );
    // ^ pozwala odczytac zawartosc pliku jeszcze raz
   
    int iSuma = 0, iLiczba;
    while( true ) //nieskonczona petla do odczytu liczb i znakow
    {
        Plik >> iLiczba;
        // ^ wczytuje liczbe z pliku
        if( Plik )
             iSuma += iLiczba;
        else
        {
            cout << "Suma tych liczb wynosi: " << iSuma << endl;
            break; //endif
        }
    } //endwhile
   
    Plik.close();
    // ^ koncze prace na pliku
    return true;
}

int main()
{
    iSprawdzenie();
   
    return 0;
    system( "pause" );
}
P-79676
1 « 2 »
Poprzednia strona Strona 2 z 2