👤

Problema #946 douabaze de pe pbinfo va rog:
Cerința
Se dă un număr n scris în baza 2. Să se afișeze valoarea acestuia în baza 4.

Date de intrare
Programul citește de la tastatură scrierea în baza 2 a numărului n.

Date de ieșire
Programul va afișa pe ecran scrierea în baza 4 a numărului n.

Restricții și precizări
n are cel mult 100 de cifre în baza 2

Exemplu
Intrare

100011
Ieșire

203
Explicație
100011(2) este scrierea binară a numărului 35(10) . Numărul 35 trecut în baza 4 are scrierea 203(4)


Răspuns :

Răspuns:

#include <iostream>

#include <cstring>

using namespace std;

char binar[100], ch;

int p[51], i, n, k=-1, inc=0;

int main()

{

   cin >> binar;

   n=strlen(binar);

   cout << n << "\n";

   if (n%2==1) { ++k; p[k]=1; ++inc;}

   for (i=inc; i<n-1; i+=2 )

   {

       if (binar[i]=='0' && binar[i+1]=='0') { ++k; p[k]=0;}

       if (binar[i]=='0' && binar[i+1]=='1') { ++k; p[k]=1;}

       if (binar[i]=='1' && binar[i+1]=='0') { ++k; p[k]=2;}

       if (binar[i]=='1' && binar[i+1]=='1') { ++k; p[k]=3;}

   }

   cout << k << "\n";

   for (i=0; i<=k; ++i)

       cout << p[i];

}

Explicație:

deoarece numărul n, binar, are până la 100 de cifre binare, el nu poate fi citit ca număr ci ca un şir de caractere.  Pentru a converti un număr din baza  2 în baza 8, numărul binar se împarte în grupuri formate din 3 cifre binare, şi fiecărui grup îi corespunde o cifră octală. Se iau 3 cifre binare de la 2^3=8. Cum noi avem de convertit numărul binar în baza 4 ( 4= 2^2 ) vom diviza numărul binar începînd de la dreapta la stânga, în grupuri de câte 2 cifre binare. Cifrele în baza 4 de numeraţie sunt 0, 1, 2, 3 ce corespund grupurilor de cifre binare 00, 01, 10, 11.