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