Sunteți pe pagina 1din 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;

/*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"; else cout<<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"; else cout<<aux<<nu este palindrom;

/*PARCURGEREA UNEI MULTIMI DE NUMERE PANA LA INDEPLINIREA UNEI/UNOR CONDITII*/

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

/*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; else cout<<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;

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)

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; else cout<<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

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 intrun 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];

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 dreapta v[i]=aux; for(i=1;i<=n;i++) cout<<v[i]<< ;}