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

lekcja 33 wczytywanie danych z pliku za pomocą operatora >>

Ostatnio zmodyfikowano 2015-12-19 00:38
Autor Wiadomość
Zdziszek
Temat założony przez niniejszego użytkownika
lekcja 33 wczytywanie danych z pliku za pomocą operatora >>
» 2015-12-18 23:13:36
Witam, mam problem z zadaniem domowym w lekcji 33:

Zadanie domowe
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<stdio.h>
#include<string>
#include<conio.h>
#include<math.h>
#include<fstream>
using namespace std;

bool wyswietl( string nazwa )
{
    fstream plik;
    plik.open( nazwa.c_str() );
    if( !plik.good() )
         return false;
   
    int a, b = 0; //zmienna a zlicza ilosc liczb w poszczegolnych wierszach, zmienna b sumuje wszystkie liczby
    string wiersz;
   
    while( getline( plik, wiersz ) )
    {
        int tab[ 100 ];
        for( int i = 0; i < wiersz.length(); i++ ) //wyzerowanie elementow tablicy
        {
            tab[ i ] = 0;
        }
        a = 1;
       
        for( int i = 0; i <= wiersz.length(); i++ ) //liczenie ile jest liczb w wierszu
        {
            if( wiersz[ i ] == ' ' )
                 a++;
           
        }
       
        for( int i = 0; i < a; i++ ) //wczytanie liczb do tablicy
        {
            plik >> tab[ i ];
        }
        for( int i = 0; i < a; i++ ) //sumowanie elementow tablicy
        {
            b += tab[ i ];
        }
    }
    cout << "Suma liczb w wierszu wynosi: " << b << endl;
    plik.close();
    return true;
}






int main()
{
    if( !wyswietl( "cpp0x.txt" ) )
         std::cout << "Nie udalo sie otworzyc pliku o podanej nazwie." << std::endl;
   
    cout << endl << endl << endl;
   
   
    system( "pause" );
    return 0;
}

Problem polega na tym, że program nie sumuje prawidłowo tych liczb. W pliku tekstowym mam:
3 5 2 7
53 6 35
3 2
5 7 3 63 4 3 65 3 5

A program wyświetla:
Suma liczb w wierszu wynosi: 109

Mógłby mi ktoś powiedzieć, gdzie zrobiłem błąd?
P-142135
carlosmay
» 2015-12-19 00:05:50
C/C++
// pootwieranie pliku
int temp;
int suma = 0;

while( plik >> temp )
     suma += temp;

Cała filozofia odczytania danych z tego pliku.
P-142137
Zdziszek
Temat założony przez niniejszego użytkownika
» 2015-12-19 00:38:41
Rozpisałem się w kodzie, a tu widzę dwa słowa wystarczyły:P Dzięki=]
P-142139
« 1 »
  Strona 1 z 1