Am rezolvat problema https://www.pbinfo.ro/?pagina=probleme&id=946 cu urmatorul cod dar am primit doar 40 de puncte. Imi poate spune cineva pentru care cazuri nu functioneaza bine ?
#include
#include
#include
using namespace std;
long long int n,x,y,k,i;
int main()
{
cin>>n;
int v[100];
k=1;
while (n>0)
{
x=n%100;
switch (x)
{
case 0:
v[k]=0;
break;
case 1:
v[k]=1;
break;
case 10:
v[k]=2;
break;
case 11:
v[k]=3;
break;
}
n=n/100;
k++;
}
x=0;
for (i=k-1;i>=1;i--)
{
cout<
}
cout<
return 0;
}
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);
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;}
}
for (i=0; i<=k; ++i)
cout << p[i];
}
Explicație:
numarul l-am citit ca un string, împart numărul în perechi de biţi
00 corespunde 0 in baza 4
01 corespunde 1 în baza 4
10 corespunde 2 în baza 4
11 corespunde 3 în baza 4
parcurg şirul binar, creez cifrele din baza 4 şi le plasez în vectorul p