Informatică, întrebare adresată de negrutiudavid10, 8 ani în urmă

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 tudorpopa147
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
tudorpopa147: cu placere
Alte întrebări interesante