algoritmi fundamentali

8
 ALGORITMI FUNDAMENTALI /*ALGORITMI CU CIFRELE UNUI NUMAR*/ […] cin>>n; while(n>0) {c=n%10; n=n/10; /*prelucrarea cifrelor.ex:p(produsul)=p*c; s(suma)=s+c;etc*/} /*ALGORITMI DE DIVIZIBILITATE*/ /*algoritmu l de aflare a celui mai mare divizor comn a 2 numere date(prin impartiri repetate*/ […] cin>>a>>b; rest=a%b; while(rest!=0) {a=b; b=rest; rest=a%b;} cout<<”cmmdc=”<<b; /*algoritmu l de aflare a celui mai mare divizor comn a 2 numere date(prin scaderi repetate*/ […] cin>>a>b; for(i=1;i<=n;i++) {if(a>b) a=a-b; else b=b-a;} cout<<"cmmdc="<<a; /*algoritmu l de aflare a celui mai mic multiplu comun a doua numere*/ […] cin>>a>>b; x=a; y=b; for(i=1;i<=n;i++) {if(a>b) a=a-b; else b=b-a;} cout<<”cmmmc=”<<(x*y)/a;

Transcript of algoritmi fundamentali

Page 1: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 1/8

 

ALGORITMI FUNDAMENTALI

/*ALGORITMI CU CIFRELE UNUI NUMAR*/[…]

cin>>n;

while(n>0){c=n%10;

n=n/10;

/*prelucrarea cifrelor.ex:p(produsul)=p*c;s(suma)=s+c;etc*/}

/*ALGORITMI DE DIVIZIBILITATE*/

/*algoritmul de aflare a celui mai mare divizor comn a 2 numere date(prin impartiri

repetate*/[…]

cin>>a>>b;rest=a%b;

while(rest!=0)

{a=b;b=rest;

rest=a%b;}

cout<<”cmmdc=”<<b;

/*algoritmul de aflare a celui mai mare divizor comn a 2 numere date(prin scaderi

repetate*/

[…]

cin>>a>b;for(i=1;i<=n;i++)

{if(a>b)a=a-b;

else

b=b-a;}cout<<"cmmdc="<<a;

/*algoritmul de aflare a celui mai mic multiplu comun a doua numere*/[…]

cin>>a>>b;

x=a;y=b;

for(i=1;i<=n;i++)

{if(a>b)a=a-b;

else

b=b-a;}

cout<<”cmmmc=”<<(x*y)/a;

Page 2: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 2/8

 

/*algoritmul care verifica daca un numar este prim sau nu*/

[…]cin>>n;

d=2;

while(d<=n/2&&n%d!=0)d++;

if(d>n/2)cout<<n<<"este nr prim";

elsecout<<n<<"nu este nr prim";

/*algoritmul de descompunere in factori primi*/[…]

cin>>n

d=2;while(n>1)

{if(n%d==0) /*d divide n*/

{ /*calculez multiplicitatea lui d in n*/

m=0;while(n%d==0)

{m++;

n=n/d;}cout<<”divizorul”<<d<<”multiplicitatea”<<m;

}

d++;}

/*algoritmul prin care se verifica daca un numar este palindrom*/[…]

aux=n;o=0;

while(n>0)

{o=o*10+n%10;n=n/10;}

if(o==aux)

cout<<aux<<"este palindrom";

elsecout<<aux<<”nu este palindrom;

/*PARCURGEREA UNEI MULTIMI DE NUMERE PANA LA INDEPLINIREA

UNEI/UNOR CONDITII*/

Page 3: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 3/8

 

EXEMPLE:

//cautarea unui element z si numarul de aparitii[…]while(cin>>x)

if(x==z)

k++;if(k!=0)

cout<<z<<”apare in multime de”<<k<<ori”;

//cautarea unui element x intr-o multime[…]

cin>>x;gasit=0;

while(!gasit&&cin>>n)

if(n==x)

gasit=1;if(gasit==1)

cout<<x<<"se afla in multime”;

//cautarea maximului si a minimului[…]

cin>>x;

min=x;max=x;

while(cin>>x)

if(x>max)max=x;

if(x<min)

min=x;cout<<”minimul este”<<min;

cout<<”maximul este”<<max;

 

ALGORIMI FUNDAMENTALI CU VECTORI

Page 4: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 4/8

 

/*citirea unui vector*/for(i=1;i<=n;i++)

{cout<<"a["<<i<<"]=";cin>>a[i];}

/*aflarea cmmdc-ului a mai multor numere(citite dintr-un vector)*/[…]

for(i=1;i<=n;i++){d=a[i];

for(i=2;i<=n;i++)

while(a[i]!=0)

{r=d%a[i];d=a[i];

a[i]=r;}

cout<<"cmmdc="<<d;}

/*algorimul prin care se verifica ce numere sunt prime din n numere date*/[…]

for(i=1;i<=n;i++){d=2;

while(d<=nr[i]/2&&nr[i]%d!=0)

d++;if(d>nr[i]/2)

cout<<nr[i]<<"este nr prim"<<endl;

elsecout<<nr[i]<<"nu este nr prim"<<endl;}

/*ordonarea vectorului crescator prin selectarea minimului*/...

for(i=1;i<=n-1;i++)

for(j=i+1;j<=n;j++)

if(a[i]>a[j]){aux=a[i];

a[i]=a[j];

a[j]=aux;}cout<<"\n vectorul ordonat crescator este \n ";

for(i=1;i<=n;i++)

cout<<a[i]<<",";cout<<endl;

/*ordonarea vectorului descrescator,folosind metoda bulelor*/

...do

{inv=0;

Page 5: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 5/8

 

for(i=1;i<=n-1;i++)

if(a[i]>a[i+1])

{aux=a[i];a[i]=a[i+1];

a[i+1]=aux;

inv=1;}}while(inv==1);

cout<<"\n vectorul ordonat crescator este \n";for(i=1;i<=n;i++)

out<<a[i]<<",";

/*cautarea minimului intr-un vector*/...

min=a[1];

for(i=2;i<=n;i++)f(a[i]<min)

min=a[i];

cout<<min;

/*cautarea maximului intr-un vector*/...

max=a[1];for(i=2;i<=n;i++)

if(a[i]>min)

max=a[i];cout<<max;

/*cautarea secventiala(1) a unui element intr-un vector ordonat crescator*/...cin>>x;

gasit=0;

i=1;while(!gasit&&i<=n)

{if(a[i]==x)

gasit=1;

else i++;}

if(gasit==1)

cout<<x<<"se afla in vector pe pozitia"<<i;

/*cautarea secventiala(2) a unui element intr-un vector ordonat crescator*/...cin>>x;

for(i=1;i<=n;i++)

if(a[i]==x)

Page 6: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 6/8

 

cout<<x<<"se afla in vector pe pozitia"<<i;

/*cautarea binara a unui element intr-un vector ordonat crescator*/…

li=1;

ls=n;mij=(li+ls)/2;

while(v[mij]!=x&&li<=ls){if(v[mij]<x)

li=mij+1;

else

ls=mij-1;

mij=(li+ls)/2;}if(v[mij]==x)

cout<<x<<”se afla in vector”;

elsecout<<x<<”nu se afla in vector”;

/*eliminarea unui element intr-un vector de pe pozitia “i”*/

[…]for(i=k;i<=n-1;i++)

v[i]=v[i+1];

n--;

//afisam vectorul

/*adaugarea unui element “x” pe pozitia k*/[…]for(i=n+1;i>=k;i--)

v[i]=v[i-1];

v[k]=x;

n++;//afisam vectorul

/*interclasarea a doi vectori ordonati.

Se dau doi vectori ordonati,a si b.Construiti vectorul c cu elementele

vectorului a si ale vectorului b,in ordine crescatoare.vectorul a are n elemente si

vectorul b

Page 7: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 7/8

 

are m elemente.*/...

i=1; j=1;

k=1;

while(i<=n&&j<=m){if(a[i]<b[j])

{c[k]=a[i];i++;}

else{c[k]=b[j];

j++;}

k++;}while(i<=n)

{c[k]=a[i];

i++;k++;}

while(j<=m)

{c[k]=b[j];j++;

k++;}

for(i=1;i<=n+m;i++)

cout<<c[i]<<" ";

/*determinarea frecventei de aparitie a cifrelor intr-un numar sau a elementelor intr-

un vector*/

[…]{int n,f[10]={0},I,c;

cin>>n;

while(n!=0){c=n%10;

f[c]++;

n=n/10;}

for(i=0;i<=9:i++)if(f[i]!=0)

cout<<”cifra”<<i<<”apare de”<<f[i]<<”ori”<<endl;}

/*determinarea permutarilor circulare ale unui vector la stanga*/[…]

for(k=1;k<=n;k++)

{aux=v[1];

Page 8: algoritmi fundamentali

5/17/2018 algoritmi fundamentali - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-fundamentali-55ab59e0abacb 8/8

 

for(i=2;i<=n;i++)

v[i-1]=v[i];//deplasarea elementelor spre stanga

v[n]=aux;//se plaseaza pe ultima pozitie din vector for(i=1;i<=n;i++)

cout<<v[i]<<” “;}

/*determinarea permutarilor circulare ale unui vector la dreapta*/[…]

for(k=1;k<=n;k++){aux=v[n];

for(i=n-1;i>=1;i--)

v[i+1]=v[i];//deplasarea elementelor spre dreaptav[i]=aux;

for(i=1;i<=n;i++)

cout<<v[i]<<” “;}