Setul 2

1) Alegeti doua numere aleatoare A,B; unde 128 < A,B <256; A, B sunt in baza 10. Efectuati urmatoarele operatii cu ele:

- transformati-le in baza 2, 8 si 16: (A)2 ,(B)2; (A)8,(B)8; (A)16, (B)16

- calculati : (A)16 + (B)16 ; (A)2 - (B)2

- transformati opusul lor in bazele 2, 8 si 16 (-A)2 ,(-B)2; (-A)8,(-B)8; (-A)16, (-B)16. De cati biti aveti nevoie pentru a le reprezenta in complement de 2?

2) Barza are 68 de cromozomi pe când omul are 46. Determinați câte exemplare sunt necesare din fiecare specie pentru a umple o încăpere astfel încât numărul de cromozomi de barză să fie egal cu numărul de cromozomi de om, fiecare specie fiind reprezentată prin cel puțin 100 de exemplare. Se va afișa rezultatul pe ecran.

Rezolvare:

1)

a)

Fie A=128 si B=129

(A)2 =10000001 (A)8 =201 (A)16=81

(B)2 =10000010 (B)8 =202 (B)16=82

b)

(A)16 + (B)16 =103

(A)2 - (B)2 = -1

c)

(-A)2 =101111111 (-A)8 =577 (-A)16 =17F

(-B)2 =101111110 (-B)8 =576 (-B)16 =17E

2)

Metoda 1

C++

#include <iostream>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

int i,j,t=0,inf1=100,inf2=100,sup1=101,sup2=101;

while(t==0)

{

for(i=inf1;i<=sup1;i++)

if(t==0)

for(j=inf2;j<=sup2;j++)

if(t==0)

if(j*68==i*46)

{cout<<"Numar oameni: "<<i<<" Numar berze: "<<j<<endl;

t=1;

}

if(t==0)

{

inf1=sup1;

inf2=sup2;

sup1=sup1*10;

sup2=sup2*10;

}

}

return 0;

}

C

#include <stdio.h>

#include <stdlib.h>

int main()

{

printf("Hello world!\n");

int i,j,t=0,inf1=100,inf2=100,sup1=101,sup2=101;

while(t==0)

{

for(i=inf1;i<=sup1;i++)

if(t==0)

for(j=inf2;j<=sup2;j++)

if(t==0)

if(j*68==i*46)

{printf("Numar oameni: %d\n",i);

printf("Numar berze: %d",j);

t=1;

}

if(t==0)

{

inf1=sup1;

inf2=sup2;

sup1=sup1*10;

sup2=sup2*10;

}

}

return 0;

}

Metoda 2

C++

#include <iostream>

using namespace std;

int cmmdc(int a,int b)

{

while(a!=b)

if(a>b)

a=a-b;

else

b=b-a;

return a;

}

int main()

{

int c=cmmdc(68,46);

int d=(68*46)/c,b=d/68,o=d/46, om=o,bz=b;

while(bz<100)

{om=om+o;

bz=bz+b;

}

cout<<"Numaru oameni: "<<om<<" "<<"Numar berze: "<<bz;

return 0;

}

C

#include <stdio.h>

#include <stdlib.h>

int cmmdc(int a,int b)

{

while(a!=b)

if(a>b)

a=a-b;

else

b=b-a;

return a;

}

int main()

{

int c=cmmdc(68,46);

int d=(68*46)/c,b=d/68,o=d/46, om=o,bz=b;

while(bz<100)

{om=om+o;

bz=bz+b;

}

printf("%d\n",bz);

printf("%d",om);

return 0;

}