algoritmi fundamentali
Transcript of 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;
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*/
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
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;
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)
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
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];
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]<<” “;}