Se citeşte un număr natural n scris în baza b1. Scrieţi un program care să transforme numărul în baza b2 (b1, b2 numere naturale din
intervalul [2,10]).
Exemplu:
dacă n=2301, b1= 4, iar b2= 9 atunci rezultatul va fi: (216)in baza 9 adică:
(2301)in baza 4 = (177) in baza 10 = (216) in baza 9
Indicatie:
1. Transformăm numărul n din baza b1 în baza 10 (rezulta un numar m).
2. Transformăm numărul m din baza 10 în baza b2.
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
using namespace std;
int main ()
{
int x, b1, b2, copie_x, nrcifre=0, i, intermediar=0, ogl=0;
cin >> x >> b1 >> b2;
copie_x = x;
while (copie_x>0)
{
nrcifre++;
copie_x /= 10;
}
while (x>0)
{
ogl = ogl*10 + x%10;
x /= 10;
}
for (i=1; i<=nrcifre; i++)
{
intermediar = intermediar*b1 + ogl%10;
ogl /= 10;
}
int y=0, p=1;
while (intermediar > 0)
{
y = y+(intermediar%b2)*p;
intermediar /= b2;
p *= 10;
}
cout << y;
return 0;
}
Explicație:
Am folosit algoritmul din baza b1 in 10, apoi din 10 in b2. Din x in baza b1 obtinem intermediar in baza 10, iar din intermediar in bza 10 obtinem y in baza b2.
negrutiudavid10:
multumesc mult
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă