Fragment
do { ... } while( p > 0 );
nie ma większego sensu - przecież podstawa jest ustaloną liczbą, więc taki program zawsze się zapętli.
Jeśli chodzi o kolejność, to są dwa wyjścia:
1. Obliczać cyfry od końca tak jak w Twoim rozwiązaniu, zapisywać je do tablicy i potem wypisać tablicę od tyłu.
2.
Kod: Zaznacz cały
void drukuj( int n, int p )
{
int m = 1;
while( n >= p*m ) m *= p;
while( m > 0 )
{
int d = n/m;
std::cout << d;
n -= d*m;
m /= p;
}
}
Oczywiście zakładam, że
n
jest liczbą dodatnią i
p <= 10
- w przeciwnym razie kod trzeba odpowiednio zmodyfikować.