Sunteți pe pagina 1din 11

Algoritm elementari 1

Algoritmi
elementari

Algoritm elementari 2

Algoritmi de interschimbare
a valorilor a dou variabile
Interschimbarea valorilor a dou variabile de memorie x i y nu se face
prin simpla atribuire a noii valori, deoarece secvena de atribuiri x<-y i
y<-x ar duce la pierderea valorii lui x, iar secvena y<-x i x<-y ar
duce la pierderea valorii lui y.
Pentru a realiza interschimbarea coninutului celor dou variabile de
memorie se poate folosi una din urmtoarele variante de algoritm:
Varianta 1. Interschimbarea valorilor a dou
variabile a i b prin folosirea
unei variabile intermediare x. Paii
algoritmului sunt:
1. Se salveaz valoarea primei variabile a n
variabila x;
2. Se atribuie primei variabile valoarea celei
de a doua variabile;
3. Se atribuie celei de a doua variabile b
valoarea care a fost salvat n
a treia variabil x.
Exemplu. Se citesc dou variabile de la
tastatur. S se interschimbe
coninutul lor i s se afieze apoi pe ecran.
#include<iostream>
using namespace std;
void main()
{
int a, b, x;
cout<<"Introduceti a : "; cin>>a;
cout<<"Introduceti b : "; cin>>b;
x=a; a=b; b=x ;
cout<<"Valoarea lui a devine : "<<a<<endl;
cout<<"Valoarea lui b devine : "<<b<<endl;
}

Varianta 2. Interschimbarea valorilor a dou


variabile a i b fr folosirea
unei variabile intermediare. Se folosesc
identitile matematice:
a=(a-b)+b i b=((a-b)+b)-(a-b)
#include<iostream>
using namespace std;
void main()
{
int a,b;
cout<<"Introduceti a : "; cin>>a;
cout<<"Introduceti b : "; cin>>b;
a=a-b;
b=a+b;
a=b-a;
cout<<"Valoarea lui a devine : "<<a<<endl;
cout<<"Valoarea lui b devine : "<<b<<endl;

Algoritm elementari 3

Determinarea min/max
MAXIM:
#include <iostream>
#include <algorithm>
using namespace std;
int main () {
cout << "max(1,2)==" << max(1,2)
<< endl;
cout << "max(2,1)==" << max(2,1)
<< endl;
cout << "max('a','z')==" <<
max('a','z') << endl;
cout << "max(3.14,2.72)==" <<
max(3.14,2.72) << endl;
return 0;

MINIM:
MINIM:
#include <iostream>
#include <algorithm>
using namespace std;
int main () {
cout << "min(1,2)==" << min(1,2) << endl;
cout << "min(2,1)==" << min(2,1) << endl;
cout << "min('a','z')==" << min('a','z') <<
endl;
cout << "min(3.14,2.72)==" <<
min(3.14,2.72) << endl;
return 0;
}

Prelucrarea cifrelor unui numar:


Pentru prelucrarea cifrelor unui numar se poate folosi unul din urmatorii algoritimi:
- algoritmul pentru extragerea cifrelor unui numar
- algoritmul pentru compunerea unui numar din cifrele sale
- algoritmul pentru determinarea inversului unui numar
#include<iostream.h>
void main()
{
int c, n;
cout<<"introduceti numarul "; cin>>n;
while(n!=0)
{ c=n%10;
cout<<c<<endl;

SUMA si PRODUSUL cifrelor:


#include <iostream.h>
void main()
int s, p,m;
int suma(int x, int y, int z)
{
s=x+y+z;
cout<<"Suma nr:"<<x<<","<<y<<","<<z<<" este: "<<s;
return 0;
}
int produs(int x, int y, int z)
{
p=x*y*z;
cout<<"Produsul nr:"<<x<<","<<y<<","<<z<<" este: "<<p;
return 0;
}
int media(int x, int y, int z)
{
m=(x+y+z)/3;
cout<<"Media aritmetica a nr:"<<x<<","<<y<<","<<z<<" este: "<<m;
return 0;
}
void main()
{
int a,b,c;
cout<<"Dati a:\n"<<"= ";
cin>>a;
cout<<"Dati b:\n"<<"= ";
cin>>b;
cout<<"Dati c:\n"<<"= ";
cin>>c;
suma(a,b,c);
produs(a,b,c);
media(a,b,c);
}

Determinarea cmmdc:
#include <iostream.h>
int cmmdc(int a, int b)
{
int r;
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return b;
}
int cmmmc(int a, int b)
{
return(a*b/cmmdc(a,b));
}
void main(void)

Algoritm elementari 6
Determinarea daca un nr este prim sau nu:
#include <iostream.h>
#include <math.h>
void main ()
{
int x, d; //x=nr citit; d=numerele la care se va imparti x;
cout<<Divizorii unui numar<<endl;
cout<<Introduceti numarul: ;
cin>>x;
cout<<Divizorii numarului x sunt: ;
for (d=1; d<=x; d++) //pentru d, initial 1, pana la numarul x;
{
if (x%d==0) //verificam daca x se imparte exact la acel presupus divizor
cout<<d<<; ; //daca da, il afisam;

Algoritm elementari 7

Algoritm elementari 7

}
}

Algoritm elementari 7
Determinarea divizorilor

Algoritm elementari 7
Pentru primul program, cu alte cuvinte trebuie sa impartim numarul citit la toate
numerele mai mici decat el, sa verificam daca x se imparte exact la acel numar, si apoi
sa afisam toate numerele la care x se divide.
//Divizori
#include <iostream.h>
#include <math.h>
void main ()
{
int x, d; //x=nr citit; d=numerele la care se va imparti x;
cout<<Divizorii unui numar<<endl;
cout<<Introduceti numarul: ;
cin>>x;
cout<<Divizorii numarului x sunt: ;
for (d=1; d<=x; d++) //pentru d, initial 1, pana la numarul x;
{
if (x%d==0) //verificam daca x se imparte exact la acel presupus divizor
cout<<d<<; ; //daca da, il afisam;
}
}
Pentru a verifica daca un numar este prim, se procedeaza asemanator ca la afisare,
doar ca aici nu afisam divizorii, ci testam daca numarul are exact 2 divizori, si anume 1 si
el insusi.
//Numar prim
#include <iostream.h>
#include <math.h>
void main ()
{
int x, d, cnt, aux; //x=nr citit; d=numerele la care se imparte x; cnt=variabila care
va numara cati divizori are x; aux=auxiliara care il va memora pe x;
cout<<Numar prim<<endl;
cout<<Introduceti numarul: ; cin>>x;
cnt=0;
aux=x;
for (d=1; d<=x; d++)
{
if (x%d==0) //daca x se imparte exact la d, atunci cnt=cnt+1;
{
cnt=cnt+1;
}
}
if (cnt==2) //apoi verificam daca x are exact 2 divizori
cout<<Numarul <<aux<< este prim.; //si afisam daca acesta este prim
}else cout<<Numarul <<aux<< nu este prim.; //sau nu
}

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