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

Wypisywanie sumy cyfr z liczb trzycyfrowych

Object Storage Arubacloud
0 głosów
785 wizyt
pytanie zadane 6 czerwca 2018 w C i C++ przez Ardeq09 Nowicjusz (120 p.)

Witam forumowiczów,

Chcę, aby mój program wypisywał mi po kolei sumę cyfr zaczynając od liczby "100" kończąc na "999". Czyli, dla 100, suma wynosi jeden, dla 999 wynosi 27. Ma to jednak robić w pętli i wypisywać tylko sumę cyfr.

100, suma - 1

101, suma 2

103, suma 4

Tutaj kod:
 

 for(int liczba=100; liczba<999; liczba++)
        {
            while(liczba%10!=0)
                {
                    suma+=liczba%10;
                    liczba=liczba/10;
                }
                cout << suma <<endl;
        }



Dziękuję za pomoc! Pozdrawiam serdecznie :)

2 odpowiedzi

0 głosów
odpowiedź 6 czerwca 2018 przez k222 Nałogowiec (30,150 p.)

Napisałeś co chcesz zrobić, jak chcesz to zrobić, ale sprecyzować problem to już nie łaska :)

No dobra, przyjmując że po prostu nie działa to dwie rzeczy które mi się nasuwają to po pierwsze w pętli for na środku powinno być liczba <= 999 lub liczba < 1000 bo chcesz 999 też policzyć, a druga ważniejsza jak masz zmienną suma to liczyć sumę pierwszej liczby potem dodajesz dalej drugiej liczby potem trzeciej itp, a ty chcesz dla każdej liczby policzyć sumę oddzielnie, więc za każdym razem przed rozpoczęciem pętli while która wyznaczy ci tą sumę musisz wyzerować zmienną suma, to powinno działać lepiej:

for(int liczba=100; liczba <= 999; liczba++)  {
          suma = 0;

           while(liczba) {
                   suma += liczba%10;
                   liczba=liczba/10;
               }
               cout << suma <<endl;
       }

 

0 głosów
odpowiedź 6 czerwca 2018 przez Aisekai Nałogowiec (42,190 p.)
1. W pętli for, zmień warunek na nierówność słabą (pomijasz sumę dla 999)

2. W pętli while, zmień warunek z liczba%10!=0 na liczba!=0.

W twoim przypadku, pętla skończy się gdy reszta dzielenia z tej liczby będzie równa 0. Tzn mając liczbę np 110 nawet nie wejdziesz do pętli. .

3. Wyzeruj sumę po wypisaniu jej.
komentarz 6 czerwca 2018 przez Ardeq09 Nowicjusz (120 p.)
for(int liczba=100; liczba <= 999; liczba++)
    {
        while(liczba!=0)
        {
            suma += liczba%10;
            liczba = liczba/10;
        }
        cout << "Liczba: " << liczba << "jej suma: "<< suma <<endl;
        suma = 0;
       }

Tak wygląda kod, a program wypisuje mi:
"Liczba 0 jej suma 1" i tak cały czas, nie zamierza się skończyć :)

komentarz 6 czerwca 2018 przez Aisekai Nałogowiec (42,190 p.)
Dobra. Jest jeden problem. Zauważ, że liczba jest zmienną sterującą pętlą for. Jeżeli tą liczbę dzielisz w pętli while, dotąd aż będzie ona równa 0, to po drugiej iteracji liczba będzie równa 1, po trzeciej znowu będzie równa 1. Musiałbyś zmienną sterującą pętlą for() uniezależnić od zmiennej której chcesz liczyć sumę cyfr. Więc:

- jedna zmienna sterująca pętlą

-druga zmienna której będziesz w pętli while() zliczał sumę cyfr.

Podobne pytania

0 głosów
3 odpowiedzi 761 wizyt
+1 głos
4 odpowiedzi 3,589 wizyt
pytanie zadane 24 września 2015 w C i C++ przez LogicznyMat Użytkownik (940 p.)
0 głosów
1 odpowiedź 347 wizyt
pytanie zadane 13 lutego 2020 w C i C++ przez mariola12 Nowicjusz (120 p.)

92,626 zapytań

141,486 odpowiedzi

319,844 komentarzy

62,009 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!

...