online: 16; azi: 669; total: 51124 Manual clasa a ix a - Algoritmi - Algoritmi pentru conversii intre sisteme de numeratie

Manual clasa a IX a

Algoritmi

Algoritmi pentru conversii intre sisteme de numeratie

Se citeşte de la tastatură un număr n, care este reprezentarea numărului în baza q, q [2, 9]. Să se afişeze numărul reprezentat în baza p, p =[2,9]. q şi p se introduc de la tastatură.
# include < iostream >
using namespace std ;
int main () {
int n, q, p;
cin >> n >> q >> p;
// Convertim din baza q in baza 10
int n10 = 0 ;
int b = 1 ;
while (n != 0 ) {
int cifra = n % 10 ;
n10 += cifra * b;
b *= q;
n /= 10 ;
}
// Convertim din baza 10 in baza p
int resturi[ 32 ];
int i = 0 ;
while (n10 != 0 ) {
resturi[i] = n10 % p;
n10 /= p;
i++;
}
if (i == 0 ) {
cout << 0 << endl ;
} else {
for ( int j = i -1 ; j >= 0 ; j--) {
cout << resturi[j];
}
cout << endl ;
}
return 0 ;
}

Exemplu:
n = 101101 (baza 2) q = 2 p = 5
Pentru a converti în baza 10, folosim algoritmul din exercițiul anterior și obținem n = 45.
Pentru a converti din baza 10 în baza 5, împărțim succesiv numărul la 5 și reținem resturile:
45 : 5 = 9, rest 0 9 : 5 = 1, rest 4 1 : 5 = 0, rest 1
Resturile obținute, citite de la dreapta la stânga, sunt 104, deci n în baza 5 este 104.
Observăm că folosim un vector de dimensiune 32 pentru a reține resturile obținute în al doilea algoritm. Acest lucru este suficient pentru a converti numerele de maxim 32 de cifre.