[C++] zapis liczby w dowolnym systemie pozycyjnym.

xdominika
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 14 lis 2019, o 22:59
Płeć: Kobieta
wiek: 19
Podziękował: 23 razy

[C++] zapis liczby w dowolnym systemie pozycyjnym.

Post autor: xdominika »

Napisać funkcję
void drukuj(int n, int p)
która drukuje liczbę n w systemie pozycyjnym o podstawie p.

Kod: Zaznacz cały

 
 #include <iostream>
 
 void drukuj(int n, int p) {
do {
   for(; n>0; n=n/p)
    cout<<n%p;
   } while (p>0);
}

int main () 
{
   drukuj(29,2);
   return 0;
}
Niestety mam problem z tym, jak napisać ten program, żeby cyfry wyświetlały się w prawidłowej kolejności a nie od tyłu. Czy ktoś może wie, co powinnam tutaj zmienić?
Ostatnio zmieniony 1 gru 2020, o 09:42 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10211
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2359 razy

Re: [C++] zapis liczby w dowolnym systemie pozycyjnym.

Post autor: Dasio11 »

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ć.
xdominika
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 14 lis 2019, o 22:59
Płeć: Kobieta
wiek: 19
Podziękował: 23 razy

Re: [C++] zapis liczby w dowolnym systemie pozycyjnym.

Post autor: xdominika »

A w jaki sposób mogę zapisać te liczby w tabeli? Niestety mi się to nie udaje
Ostatnio zmieniony 1 gru 2020, o 17:57 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Po co cytujesz cały post, który masz powyżej?
ODPOWIEDZ