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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
1,023 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,660 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 (256,320 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 (256,320 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 439 wizyt
pytanie zadane 26 maja 2017 w C i C++ przez kacper1445 Mądrala (5,050 p.)
0 głosów
1 odpowiedź 402 wizyt
0 głosów
1 odpowiedź 222 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez zaliczenie14 Użytkownik (620 p.)

93,174 zapytań

142,185 odpowiedzi

321,970 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...