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

Piszę program, dla każdej liczby z pliku ma obliczyć sumę jej cyfr.

VPS Starter Arubacloud
+1 głos
840 wizyt
pytanie zadane 4 lutego 2021 w C i C++ przez BedrisK Użytkownik (600 p.)

Nie wiem co dalej robić, proszę o podpowiedź, wiem że muszę sumę policzyć, tylko nie wiem jak to zrobić...

Następnie, poda sumę cyfr większych  od 30, a potem sumę cyfr w całym pliku.


#includ <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream plik;

    plik.open("liczby.txt", ios::in);

    int d[1000], i=0;
    if(plik.good()==false)
    {
        cout << "Plik jest nie dostepny!";
    }
    else
    {
        while(!plik.eof())
        {
            plik >> d[i];
            i++;
        }
    }

    while(d[i]>0)
    {
        cout << endl << d[i]%10;
        d[i]=d[i]/10;
    }

    plik.close();

    return 0;
}

 

 

1
komentarz 4 lutego 2021 przez Great Stary wyjadacz (12,300 p.)

Czy treść zadania brzmi: "Podaj sumę cyfr liczb większych od 30, a potem sumę cyfr w całym pliku"?

1
komentarz 4 lutego 2021 przez VBService Ekspert (251,210 p.)
edycja 4 lutego 2021 przez VBService
 " Dla każdej liczby z pliku, oblicz sumę jej cyfr,                                 
   następnie podaj (wyświetl) sumę cyfr większych od 30,               
   a potem podaj (wyświetl) sumę wszystkich cyfr w całym pliku "  
?
1
komentarz 5 lutego 2021 przez BedrisK Użytkownik (600 p.)
tak, o to chodzi
komentarz 5 lutego 2021 przez BedrisK Użytkownik (600 p.)
I jak wiesz jak?
1
komentarz 5 lutego 2021 przez VBService Ekspert (251,210 p.)
edycja 5 lutego 2021 przez VBService

Propozycja, nie jest dokładnie zapisane jak treść zadania wymaga (prezentacja cząstkowych danych dodana wink ), ale może posłużyć jako przykład jakby to mogło wyglądać.

#include <iostream>
#include <fstream>
#include <vector>
 
using namespace std;

int main()
{
    fstream plik;
    plik.open("liczby.txt", ios::in);
    
    if (! plik.good()) {
        cout << "Plik nie jest dostepny!";
    } else {
        
        int liczba_z_pliku, liczba, cyfra; 
        int suma_cyfr=0, suma_wszystkie=0;
        vector <int> suma_wieksze_30;
        
        while (plik >> liczba) {
            
            cout.width(6);
            cout << liczba << "  ";
            
            liczba_z_pliku = liczba;
            
            while (liczba > 0) {
                cyfra = liczba % 10;
                suma_cyfr += cyfra;
                cout << cyfra;
                liczba /= 10;
                if (liczba > 0) cout << "+";
            }
            
            if (suma_cyfr > 30)
                suma_wieksze_30.push_back(liczba_z_pliku);
                
            cout << " = " << suma_cyfr << endl;
            suma_wszystkie += suma_cyfr;
            suma_cyfr = 0;
        }
        
        int ile_wieksze_30 = suma_wieksze_30.size();
        if (ile_wieksze_30 > 0) {
            cout << "\nLiczby, ktorych suma cyfr jest wiekszych od 30\n";
            for (int i=0; i<ile_wieksze_30; ++i) {
                cout << suma_wieksze_30[i] << endl;
            }
            
        }
        
        cout << "\nSuma wszystkich cyfr w całym pliku: " << suma_wszystkie << endl;
    }
    
    plik.close();

    return 0;
}

liczby.txt

678
345
9978
9999
41211
191985
5445
56
64992
24
67976
14782
5559
333
6791
987
12
899453

1
komentarz 6 lutego 2021 przez BedrisK Użytkownik (600 p.)
dziękuje bardzo

1 odpowiedź

+2 głosów
odpowiedź 5 lutego 2021 przez TOM_CPP Pasjonat (22,640 p.)

Sumę cyfr możesz obliczyć używając std::string, a dokładnie funkcji std::to_string()

#include <iostream>

using namespace std;

int sum_digits( int number )
{
    int sum {0};
    for( const auto& digit : to_string(number) ) sum += digit-48;    
    return sum;
}

int main()
{
   cout << " sum = " << sum_digits(1050501) << endl;
}

 

komentarz 5 lutego 2021 przez BedrisK Użytkownik (600 p.)
A czy dało by się to zrobić prościej, w main, nie chce używać innych. pozdrawiam

Podobne pytania

0 głosów
3 odpowiedzi 383 wizyt
pytanie zadane 26 maja 2017 w C i C++ przez kacper1445 Gaduła (4,880 p.)
0 głosów
1 odpowiedź 332 wizyt
0 głosów
1 odpowiedź 191 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez zaliczenie14 Użytkownik (620 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...