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

+1 głos
209 wizyt
pytanie zadane 4 lutego 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 przez Great Mądrala (5,060 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 przez VBService VIP (136,750 p.)
edycja 4 lutego 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 przez BedrisK Użytkownik (600 p.)
tak, o to chodzi
komentarz 5 lutego przez BedrisK Użytkownik (600 p.)
I jak wiesz jak?
1
komentarz 5 lutego przez VBService VIP (136,750 p.)
edycja 5 lutego 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 przez BedrisK Użytkownik (600 p.)
dziękuje bardzo

1 odpowiedź

+2 głosów
odpowiedź 5 lutego przez TOM_CPP Pasjonat (20,060 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 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 244 wizyt
pytanie zadane 26 maja 2017 w C i C++ przez kacper1445 Gaduła (4,370 p.)
0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez zaliczenie14 Użytkownik (620 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

85,728 zapytań

134,512 odpowiedzi

298,568 komentarzy

56,635 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...