Informatică, întrebare adresată de andrew2003, 9 ani în urmă

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;
}


boiustef: numărul citit poate avea 100 de cifre, deci long long nu te ajută la maxim... citeşte numărul ca un şir de caractere

Răspunsuri la întrebare

Răspuns de boiustef
1

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

Alte întrebări interesante