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ăspunsuri la întrebare
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.
Problema douabaze Operații I/O tastatură/ecran
Limita timp 0.1 secunde Limita memorie Total: 64 MB / Stivă 8 MB
Id soluție #15148254 Utilizator Boiu Stefan (stefan52)
Fișier douabaze.cpp Dimensiune 559 B
Data încărcării 02 Aprilie 2019, 17:47 Scor / rezultat 100 puncte
https://pastebin.com/XSggLGxx