[C++][Systemy liczbowe] Zamiana systemów

nowyyyy4
Użytkownik
Użytkownik
Posty: 245
Rejestracja: 9 paź 2012, o 22:52
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 16 razy
Pomógł: 1 raz

[C++][Systemy liczbowe] Zamiana systemów

Post autor: nowyyyy4 »

Mam napisać program, który zamienia liczbę z dowolnego systemu na dowolny (Ale bez literek, np. w szesnastkowym nie ma być literek A-F, tylko 10-15)
Poradziłem sobie z zamianą z dowolnego na dziesiętny ale nie wiem jak przejść z dziesiętnego na dowolny. Proszę o pomoc

Kod: Zaznacz cały

#include <iostream>

using namespace std;

int main()
{
    int n,i,p,q,S;
    cout << "Podaj ilosc cyfr wybranej liczby";
    cin>>n;
    int a[n];
    cout<<"Podaj kolejne cyfry wybranej liczby 
";
    for(i=1;i<=n;i++)
    {
        cout<<""<<i<<"_";
        cin>>a[i];
    }
    cout<<"Podaj podstawê p 
";
    cin>>p;


    S=a[1];
    for(i=2;i<=n;i++)
    {
        S=S*p+a[i];
    }

    cout<<"Liczba w systemie "<<p<<" zapisana w systemie 10 wynosi "<<S<<" 
";

cout<<"Podaj na jaki system chcesz zamienic 
";
    cin>>q;
 
}
Ostatnio zmieniony 1 gru 2014, o 21:56 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Gouranga
Użytkownik
Użytkownik
Posty: 1592
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++][Systemy liczbowe] Zamiana systemów

Post autor: Gouranga »

z dowolnego na dowolny się robi zawsze tak samo:
bierzemy liczbę np. \(\displaystyle{ (2351)_{10}}\) i dzielimy ją przez podstawę nowego systemu zapisując reszty, zamieńmy na system czwórkowy:
\(\displaystyle{ \begin{array}{r|l}
2351 & 3\\
587 & 3\\
146 & 2\\
36 & 0\\
9 & 1\\
2 & 2\\
0 & \end{array}}\)

stąd:
\(\displaystyle{ (2351)_{10} = (210233)_{4}}\)
nowyyyy4
Użytkownik
Użytkownik
Posty: 245
Rejestracja: 9 paź 2012, o 22:52
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 16 razy
Pomógł: 1 raz

[C++][Systemy liczbowe] Zamiana systemów

Post autor: nowyyyy4 »

No właśnie a jak zapisać i potem wypisać te reszty?

-- 1 gru 2014, o 21:01 --

Kod: Zaznacz cały

    while (q>0)
    {
        r=S%q;
        cout<< r;
        S=q;
        q=r;

        if (q==0)
            break;
    }  
   
Może tak?-- 1 gru 2014, o 21:40 --Mam, ale nie wiem jak wypisać je w odwrotnej kolejności:

Kod: Zaznacz cały

while (S>0)
    {
        r=S%q;
        b=S/q;
        cout<< r;
        S=b;

        if (S==0)
            break;
    }
Gouranga
Użytkownik
Użytkownik
Posty: 1592
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C++][Systemy liczbowe] Zamiana systemów

Post autor: Gouranga »

nie wypisuj ich w locie tylko wrzucaj do tablicy i na końcu wypisz całą tablicę od końca
ODPOWIEDZ