Sunteți pe pagina 1din 3

Algoritmi elementari

In limbajul C/C++ exist o serie de probleme standard care poart denumirea de


algoritmi elementari.
Acetia sunt:
1. Algoritmul de interschimbare
2. Algoritmi pentru determinarea minimului/maximului
3. Algoritmi pentru prelucrarea cifrelor unui numr
4. Algoritmi pentru calcularea celui mai mare divizor comun
5. Algoritmi pentru testarea unui numr prim
6. Algoritmi pentru conversii ntre sisteme de numeraii
7. Algoritmi pentru generarea irurilor recurente

Algoritmul de interschimbare
Prin interschimbare nelegem c 2 variabile a i b i schimb reciproc valorile
iniiale.
Se poate realiza n mai multe moduri cel mai uzual prin intermediul unei variabile
auxiliare.

int a,b,c;
cin>>a>>b;
c=a;
a=b;
b=c;
cout<<a<< <<b;

O alta varianta ce merge pe numere ntregi. Un dezavantaj ala acestei variante este
depirea data de operaia de adunare
int a,b;
cin>>a>>b;
a=a+b;
b=a-b;
a=a-b;
cout<<a<< <<b;
O alta varianta ce merge pe numere ntregi.
int a,b;
cin>>a>>b;
a^=b^=a^=b;
cout<<a<< <<b;

Algoritmi pentru determinarea minimului/maximului

Pentru a determina valoarea minima/maxima a doua valori se pot folosi mai multe
metode.
Variante pentru minim / maxim
int a,b;
cin>>a>>b;

if(a>b) cout<<b; if(a>b)cout<<a;


else cout<<a; else cout<<b;
sau
cout<<(a>b?b:a); cout<<(a>b?a:b);
sau
int mini=a; int maxi=a;
if(mini>b) mini=b; if(maxi>b) maxi=b;
cout<<mini; cout<<maxi;

Ultima varianta este utila si pentru a verifica mai mult de doua valori.

int a,b,c,mini; int a,b,c,maxi;


cin>>a>>b>>c; cin>>a>>b>>c;
mini=a; maxi=a;
if(mini>b) mini=b; if(maxi>b) maxi=b;
if(mini>c) mini=c; if(maxi>c) maxi=c;
cout<<mini; cout<<maxi;
Algoritmi pentru prelucrarea cifrelor unui numr

Suma cifrelor unui numr.


int n,s;
cin>>n; s=0;
while(n!=0)
{
s+=n%10;
n/=10;
}
cout<<s;

Oglinditul unui numr. Ex n=123 se afieaz 321.


int n,ogl;
cin>>n; ogl=0;
while(n!=0)
{
ogl=ogl*10+n%10;
n/=10;
}
cout<<ogl;
Verificarea daca un numr este palindrom. Un numr este palindrom daca oglinditul
sau coincide cu numrul iniial.
int n,ogl,m;
cin>>n; ogl=0; m=n;
while(n!=0)
{
ogl=ogl*10+n%10;
n/=10;
}
if(ogl==m)cout<<palindrom;
else cout<<nu este palindrom;

S-ar putea să vă placă și