Documente Academic
Documente Profesional
Documente Cultură
Fie x un număr scris in baza q, x ș q date. Se cere transformarea lui x in baza 10.
Exemplu:
2121(3)=.......(10)
Teorie
24765=5*100+6*101+7*102+4*103+2*104
43210
Scrierea este astfel pentru că numărul este scris în baza 10. La realizarea calcului se observă că expresia
5*100+6*101+7*102+4*103+2*104 are ca rezultat valoarea 24765.
Similar este și algoritmul de conversie doar că se înlocuiește baza 10 cu baza q în care este scris numărul. Astfel:
Deci 2121(3)=70(10).
70 3
1 23 3
2 7 3
1 2 3
2 0
Așadar conversia numărului în baza 10 se face calculând suma din cifra*baza poziția cifrei
Alte exemple:
Facem proba
34 5
4 6 5
1 1 5
1 0
29 3
2 9 3
0 3 3
0 1 3
1 0
Deci 10111(5) = 23(10). Faceți singuri proba pentru a verifica acest calcul.
Algoritm
Variabile
x – numărul ce urmează a fi convertit
q – baza în care se realizează conversia
n – reprezentarea lui n în baza 10 (se calculează o suma punând ca termen al sumei cifra*q pozitia cifrei).
p – calculăm valoarea bazapozitia cifrei pentru fiecare termen al sumei.
Descriere: Citim x și q. Parcurgem cifrele lui x punem la fiecare pas in suma n expresia cifra* q pozitia cifrei.
Pentru a calcula qpozitia cifrei înmulțim la fiecare pas p cu baza q, inițial p este 1. Repetăm algoritmul pentru cât
până când terminăm cifrele lui x (x devine 0)
Algoritm
citesc x, q //numărul x și baza q
n←0; //inițializăm n și p (suma formata din cifra*qpozitia cifrei)
p←1;
repetă
c← x%10 //aflăm c – ultima cifra a lui x
n←n+c*p //punem în n (sumă) expresia cifra*qpozitia cifrei
p←p*q //calculăm următorul p
x←[x/10] //eliminăm ultima cifra a lui x
până când x=0 //repetăm până când parcurgem toate cifrele lui x
scrie n
citesc x, q
n←0;
p←1;
repetă
n←n+(x%10)*p
p←p*q
x←[x/10]
până când x=0
scrie n
Implementare C++ a algoritmul de conversie a unui număr n din baza 10 în baza q
Exerciții
1. Convertiți din baza cerută în baza 10 numerele de mai jos. Faceți proba pentru fiecare număr
calculat:
a. 1010(2)=.........(10)
b. 102(3)=.........(10)
c. 11001(2)=.........(10)
d. 13(5)=.........(10)
e. 120(3)=.........(10)
f. 10110(2)=.........(10)
g. 103(4)=.........(10)
h. 25(7)=.........(10)
i. 221(3)=.........(10)
j. 213(4)=.........(10)
k. 110(2)=........(10)
l. 21(8)=.........(10)
m. 104(5)=.........(10)
n. 211(3)=.........(10)
2. Implementați algoritmul de conversie a unui număr din baza q în baza 10. Testați apoi algoritmul
pentru următoarele numere:
a. Intrare: x=11010, q=2 -> Ieșire:26
b. Ieșire: x=1210 q=3 -> Ieșire:48
c. Ieșire: x=1132, q=5 -> Ieșire:167
d. Ieșire: x=213, q=4 -> Ieșire:39