Documente Academic
Documente Profesional
Documente Cultură
Sistem de numerație
Până acum toate numerele utilizate
Sistem Bază
au fost în baza 10, folosind cifrele 0,1..9.
Binar 2
Pentru un sistem de numerație în baza b Ternar 3
unde 2<=b<=10 cifrele ce pot fi folosite Cuaternar 4
Zecimal 10
Duodecimal 12
Hexazecimal 16
Vigesimal 20
Sexazecimal 60
121=60*2+1 r1=1
60=30*2+0 r2=0
30=15*2+0 r3=0
7=3*2+1 r5=1
#include <iostream>
using namespace std; #include <iostream>
p=1; {cin>>n>>b;
x=0; p=1;
while(n) x=0;
{ r=n%b; while(n)
x=x+r*p; { r=n%10;
p=p*10; x=x+r*p;
n=n/b; p=p*b;
} n=n/10;
cout<<x; }
return 0; cout<<x;
} return 0;
Pentru a realiza conversia unui numă r din baza b1 în baza b2 vom proceda
astfel: }
┌cât timp n≠0 execută
└■
p=1 // b0=1
┌cât timp n≠0 execută
└■
{cin>>n>>b;
aux=n;
k=0;
k=0;
aux=n;
p=1;
p=1;
x=0;
x=0;
if(aux==0)
if(aux==0)
{k++;
{k++;
r[k]=0;}
r[k]=0;}
while(aux)
while(aux)
{k++;
{k++;
r[k]=aux%b;
r[k]=aux%10;
aux=aux/b; }
aux=aux/10; }
for(i=1;i<=k;i++)
for(i=1;i<=k;i++)
{x=x+r[i]*p; {x=x+r[i]*p;
p=p*10;} p=p*b;}
cout<<x; cout<<x;
return 0; } return 0; }
Conversia din baza b în baza 10
1. Se dă un număr natural n, scris în baza 10. Sa se verifice dacă numărul de cifre de zero
este egal cu numărul de cifre de 1 în reprezentarea numărului în baza doi.
Exemplu: dacă n=(49)10 =(110001)2 are trei cifre de 1 şi trei cifre de zero, deci pe ecran
trebuie afişat „Da, numar egal de cifre de 0 şi 1”;
dacă n=(54)10 =(110110)2 are patru cifre de 1 şi două cifre de zero, deci pe ecran trebuie
afişat „Nu, numar diferit de cifre de 0 şi 1”.
#include< iostream>
int n,m,nr0,nr1,r,p;
int main()
{ cin>>n;
p=1;
while(n)
{r=n%2;
if(r==0)
nr0++;
else
nr1++;
m=m+r*p;
p=p*10;
else
return 0; }
2. Se citeşte un număr natural n scris în baza b1. Scrieţi un program care să transforme
numărul în baza b2 (b1, b2 numere naturale din [2,10]) .
Exemplu: dacă n=2301, b1= 4, iar b2= 9 atunci rezultatul va fi: (216)9 adică:
(2301)4=(177)10=(216)9
#include<iostream> p=p*b1;
int n,m,r,p,b1,b2,z; }
cin>>b1; {r=m%b2;
cin>>b2; p=p*10;
p=1; }
#include <iostream> }
{cin>>n1>>b1; while(aux)
aux=n1; {k++;
k=0; r[k]=aux%10l;
while(aux) aux/=10;}
{k++; p=1;
r[k]=aux%10; for(i=1;i<=k;i++)
aux/=10;} {x=x+r[i]*p;
x=0; p=p*b2;
p=1; }
for(i=1;i<=k;i++) cout<<x;
{x=x+r[i]*p; return 0;
p=p*b1; }
4. Se citește un numă r natural n și apoi se citesc n numere întregi. Scrieți un
program care afișează numprul cifrelor egale cu 1 care apr în scrierea fiecă rui numă r în
baza 2.
#include<iostream>
int n,x,nr,r,i;
int main()
{ cin>>n;
for(i=1;i<=n;i++)
cin>>x;
nr=0;
while(x)
{if(x%2==1)
nr++;
x=x/2; }
cout<<nr<<' ';}
return 0; }
Pbinfo 2872
Cerința
Se dă numărul natural n. Calculați 2n, apoi afișați rezultatul în baza 2.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran numărul 2n, conform cerinței.
Exemplu
Intrare
Ieșire
10
Explicație
21 = 2 = 10(2).
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cout << 1;
while (n--)
cout << 0;
return 0;
}
Pbinfo 429
Cerinţa
Se citește un număr natural n. Să se determine câte cifre 0 și câte
cifre 1 are reprezentarea în baza 2 a acestui număr.
Date de ieşire
Programul afișează pe ecran numerele Z și U, separate printr-un spațiu,
reprezentând numărul cifrelor 0, respectiv al cifrelor 1 din reprezentarea
în baza 2 a lui n.
Exemplu
Intrare
174
Ieșire
3 5
Date de intrare
Programul citește de la tastatură două numere naturale.
Date de ieşire
Programul afișează pe ecran valoarea cerută.
Restricţii şi precizări
Exemplu
Intrare
125 1250
Ieșire
125
Explicaţie
Reprezentarea lui 125 în baza 2 este 1111101, cu 6 cifre 1, iar reprezentarea
lui 1250 este 10011100010, cu 5 cifre 1. Astfel, 125 are mai multe cifre 1 în
reprezentarea în baza 2.
#include <iostream>
using namespace std;
int main(){
int n1=0,m1=0,n,m,x,a,b;
cin>>n>>m;
a=n;
b=m;
while(n>0)
{
x=n%2;
if(x==1)
n1++;
n=n/2;
}
while(m>0)
{
x=m%2;
if(x==1)
m1++;
m=m/2;
}
if(n1>m1)
cout<<a;
else
cout<<b;
return 0; }