• 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.

Object Storage Arubacloud
+1 głos
858 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 (252,740 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 (252,740 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 388 wizyt
pytanie zadane 26 maja 2017 w C i C++ przez kacper1445 Gaduła (4,880 p.)
0 głosów
1 odpowiedź 335 wizyt
0 głosów
1 odpowiedź 194 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez zaliczenie14 Użytkownik (620 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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!

...