posłużyć do tego może std::vector. Zadeklaruj globanie taki wektor i za każdym razem, gdy dostajesz się do erszty z dzielenia przez 10. wrzuć ją do tego wektora. Jednoczesnie możesz sumować te reszty w jednej pętli.
Sposób użycia w twoim problemie:
Deklaracja wektora:
vector <int> v; // nie musi byc int, moze byc short, char itp.
Funkcja wrzucająca reszty z dzielenia przez 10 do wektora oraz wypisująca te reszty
void f(int liczba) {
int suma = 0;
while (liczba != 0) {
v.push_back(liczba % 10);
suma = suma + liczba % 10; // suma += liczba % 10
liczba = liczba / 10; // liczba /= 10
}
if (suma % 3 == 0)
// liczba jest podzielna przez 3
else
// nie jest podzielna przez 3
// wypisanie tych reszt moze sie odbyc w taki sposob:
for (auto &x : v)
cout << x << ' ';
/* jesli chcesz wypisac te reszty w porzadku rosnacym
przed wypisaniem tych reszt uzyj metody sort() */
sort(v.begin(), v.end());
/* jesli chcesz w porzadku malejacym dodatkowo po
sort() uzyj reverse() w taki sposob */
reverse(v.begin(), v.end());
}
Tutaj przykładowy pełny program. Niech posłuży ci ku nauce:
#include <iostream> // cin oraz cout
#include <vector> // vector
#include <algorithm> // sort() oraz reverse()
using namespace std;
vector <int> v;
void f(int liczba) {
int suma = 0;
while (liczba != 0) {
v.push_back(liczba % 10);
suma = suma + liczba % 10; // suma += liczba % 10
liczba = liczba / 10; // liczba /= 10
}
// wypisanie czy liczba jest podzialna
if (suma % 3 == 0)
cout << "Liczba podzielna przez 3" << endl;
else
cout << "Liczba niepodzielna przez 3" << endl;
// wypisanie reszt w porzadku wrzucania do wektora:
for (auto &x : v)
cout << x << ' ';
cout << endl;
// wypisanie reszt w porzadku rosnacym:
sort(v.begin(), v.end());
for (auto &x : v)
cout << x << ' ';
cout << endl;
// wypisanie reszt w porzadku malejacym:
reverse(v.begin(), v.end());
for (auto &x : v)
cout << x << ' ';
}
int main() {
int liczba;
cin >> liczba;
f(liczba);
}