suma cyfr w liczbie

0
#include <iostream>
using namespace std;

int main()
{
    int liczba, wynik = 0;
    cout << "Podaj liczbe: ";
    cin >> liczba;


    while (liczba > 0)
    {
        wynik += liczba % 10;
        liczba /= 10;
    }
    cout << wynik;
    return 0;
}

napisałem taki kod. Jak sprawić żeby program obliczył sume cyfr z obliczonej sumy i zakończył się gdy liczba będzie 1 cyfrowa ?

3

Wydziel pętlę while jako osobną funkcję, potem w kodzie właściwym odwołuj się do niej w pętli tak długo, aż 0 ≤ rezultat ≤ 9.

0

Dobrze by było jakby wszystko było w jednej funkcji

0

while(liczba > 9); ?
Innymi słowy: to co napisał @Althorion. ;)

0

program ma jeszcze wyswietlac wszystkie sumy dodanych cyfr jak to zrobić ? (sorry że się pytam ale jestem początkującym programistą)

1
#include <string>
#include <sstream>
#include <iostream>
using namespace std;

int suma_cyfr(int i)
{
  int result = 0;
  ostringstream oss;
  oss << i;
  string &s = oss.str();
  for (char c:s)
    result += (c-'0');
  return result;
}

int main()
{
   cout << suma_cyfr(123456789) << endl;
}

0

ogólnie rzecz biorąc mam to zrobić za pomocą dwóch pętli

0

Posiłkując się kodem Azariena mógłbyś zrobić funkcję rekurencyjną:

#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
int suma_cyfr(int i)
{
	int result = 0;
	ostringstream oss;
	oss << i;
	string s = oss.str();
	for (char c:s)
		result += (c-'0');
	return result;
}

void suma_sum(int wynik)
{
	cout << wynik << "\n";
	if (wynik < 10) return;
	wynik = suma_cyfr(wynik);
	suma_sum(wynik);
}
 
int main()
{	
	suma_sum(12345678);
}

a jeśli musisz zrobić dwie pętle to będzie to pętla w pętli i będzie wyglądać tak:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	int liczba, wynik = 10;
    cout << "Podaj liczbe: ";
    cin >> liczba;
 
	while (wynik > 9)
	{	
		wynik = 0;
		while (liczba > 0)
		{
			wynik += liczba%10;
			liczba /= 10;
		}
		liczba = wynik;
		cout << wynik << "\n";
	}
}

Dwa wątki, dwie odpowiedzi, można zamknąć :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1