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

Rozdział 33 - zadanie domowe - problem

Ostatnio zmodyfikowano 2016-09-05 18:54
Autor Wiadomość
Speedwaymonia93
Temat założony przez niniejszego użytkownika
Rozdział 33 - zadanie domowe - problem
» 2016-09-05 15:57:44
Proszę Was bardzo o pomoc w zadaniu. Oto treść zadania: Otwórz plik tekstowy w którym będą się znajdowały tylko liczby całkowite oddzielone od siebie spacjami. Napisz program który wczyta liczby z pliku i wypisze sumę wszystkich liczb na standardowym wyjściu.

Kod mi się kompiluje ale nie działa. Pomóżcie prosze i podpowiedzcie gdzie popełniłam błąd :)

To są dane z mojego pliku txt:
1 2 5 67 89 4 5 8 9 56 4456 324 2456 214 3456 456 355 789 2 1 0 9876

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

bool wczytaj_plik( std::string nazwa_pliku )
{
    std::ifstream plik;
    plik.open( nazwa_pliku.c_str() );
    if( !plik.good() )
         return false;
   
    else
         std::cout << "Udalo sie otworzyc plik " << std::endl;
   
    std::string wiersz;
    std::getline( plik, wiersz );
    int a = wiersz.size();
   
    while( std::getline( plik, wiersz ) )
    { int suma = 0;
        for( int i = 0; i < a; i++ ) //wczytanie liczb do tablicy
        { int tablica[ i ];
            plik >> tablica[ i ];
            std::cout << tablica[ i ];
        }
        for( int i = 0; i < a; i++ ) //sumowanie elementow tablicy
        { int tablica[ i ];
            suma += tablica[ i ];
            std::cout << "Suma wynosi:" << suma;
        }
    }
    plik.close();
    return true;
}

int main()
{
    if( !wczytaj_plik( "D:/CodeBlocks/ZADANIA DOMOWE/POZIOM 4/lekcja 33/dane.txt" ) )
         std::cout << "nie udalo sie otowrzyc pliku" << std::endl;
   
    return 0;
}
 
P-151457
carlosmay
» 2016-09-05 16:21:05
Do tego nie potrzeba tablicy. Wystarczą dwie zmienne (do wczytywania liczby i suma wartości).
Do wczytywania z pliku użyj operatora
>>
 (w tym przypadku std::getline to utrudnianie sobie życia).
P-151458
Speedwaymonia93
Temat założony przez niniejszego użytkownika
» 2016-09-05 16:30:33
Nie wychodzi mi tym sposobem co sugerowałes z tylko dwiema zmiennymi. A jak mogłabym to zrobić z użyciem tablicy?
P-151459
carlosmay
» 2016-09-05 16:37:13
Tak samo, tylko zamiast wczytywać do zmiennej przechowującej liczbę, wczytujesz do tablicy.
Na forum jest wiele przykładów wczytywania operatorem
>>
.
P-151460
Speedwaymonia93
Temat założony przez niniejszego użytkownika
» 2016-09-05 16:41:41
Problem jest taki ze program po skompilowaniu wypisuj mi tylko komunikat ze się udało otworzyc plik (zrobiłam tak dla pewności ze na pewno sie plik otwiera)ale żadnch danych z pliku mi nie wczytuje i nie mogę dojść do tego dlaczego tak się dzieje.
P-151461
mateczek
» 2016-09-05 16:43:14
w programie musisz sporo pokasować :) ogólnie sumę liczysz tak
C/C++
while( plik >> liczba ) {
    suma += liczba;
}
P-151462
Speedwaymonia93
Temat założony przez niniejszego użytkownika
» 2016-09-05 16:51:26
No dobra, sumowanie rozumiem jak zrobić ale nadal program mi nie wczytuje liczb z pliku.
P-151463
mateczek
» 2016-09-05 16:53:41
tak powinien wyglądać mniej więcej program!!!
Z grubsza miałaś dobrze otwieranie pliku więc nie wiem skąd ten błąd z otwarciem!!!
C/C++
#include <iostream>
#include <fstream>

void wczytaj_plik( std::string nazwa_pliku ) {
    std::ifstream plik( nazwa_pliku );
    if( plik.good() ) {
        int liczba = 0, suma = 0;
        while( plik >> liczba ) suma += liczba;
       
        std::cout << "Suma wynosi:" << suma << std::endl;
    }
}

int main()
{
    wczytaj_plik( "dane.txt" );
    return 0;
}
P-151464
« 1 » 2
  Strona 1 z 2 Następna strona