Algoritmi C++
Vectori
Parcurgere:
-de la stanga la dreapta:
for(i=1; i<=n; i++) prelucrare v[i]
-de la dreapta la stanga:
for(i=n; i>=1; i--) prelucrare v[i]
Primii 2 vecini:
for(i=1; i<=n-1; i++) prelucrare (v[i]; v[i+1]) sau for(i=2; i<=n; i++) prelucrare
(v[i-1]; v[i])
Triplete de vecini
for(i=1; i<=n-2; i++) prelucrare (v[i]; v[i+1]; v[i+2]) sau
for(i=2; i<=n-1; i++) prelucrare (v[i-1]; v[i]; v[i+1]) sau
for(i=2; i<=n; i++) prelucrare (v[i-2]; v[i-1]; v[1])
Perechi distincte:
for(i=1; i<=n-1; i++)
for(j=i+1; j<=n; j++) prelucrare (v[i]; v[j])
Sortarea vectorilor:
Met.1:
-Bubble Sort:
do { ok=0;
for(i=1;i<=n;i++)
if(v[i]>v[i+1])
{ aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
} while(ok==1)
Met2:
-Sortarea prin selectia directa:
for(i=1; i<=n; i++)
for(j=i+1; j<=n; j++)
if( v[i]>v[j]) { aux=v[i];
v[i]=v[j];
v[j]=aux;
}
Inserarea unui element in vector:
for(i=n; i>=k; i--) v[i+1]=v[i];
v[k]=x;
n++;
Ștergerea unui element din vector:
for(i=k+1; i<=n; i++) v[i-1]=v[i];
n--;
Cautarea binara:
int v[], x,i,n,ls,ld,mij,ok;
cin>>n;
for(i=1; i<=n; i++) cin>> v[i];
cin>>x;
ls=1; ld=n; ok=0;
while(ls<ld && ok==0)
{ mij=(ls+ld)/2;
if(x==v[mij]) ok=1;
else if(x<v[mij])
ld=mij-1;
ls=mij+1;
if(ok==1)
cout<<x<<pe pozitia<<mij;
else cout<<x<<nu exista;
return 0;
Interclasarea vectorilor:
#include <iostream>
using namespace std;
int a[101], b[101], c[201], n, m, k;
int main()
{ cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i];
cin >> m;
for(int i = 1; i <= m; i++)
cin >> b[i];
int i = 1, j = 1;
while(i <= n && j <= m)
{ if(a[i] < b[j]) {
k++;
c[k] = a[i];
i++;
} else {
k++;
c[k] = b[j];
j++;
}
}
while(i <= n) {
k++;
c[k] = a[i];
i++;
}
while(j <= m) {
k++;
c[k] = a[j];
j++;
}
for(int i = 1; i <= k; i++)
cout << c[i] << " ";
return 0;
}
Fisiere text:
-Citire: f>>v1>>v2...
-Citire a tuturor valorilor dintr-un sir:
while{f>>x) prelucrare x;
Afisare: f<<;
Tablouri bidimensionale (matrice)
Linie cu linie: for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
prelucrare a[i][j];
Afisare: for(i=1; i<=n; i++)
{ for(j=1; j<=n; j++)
cout<<a[i][j]<<’’ ’’;
cout<<endl;
Coloana cu coloana:
for(j=1; j<=m; j++)
for(i=1; i<=n; i++) prel. a[i][j];
Diagonala principala:
for(i=1; 1<=n; i++) a[i][j];
sau
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(i==j) a[i][j];
Deasupra diagonala principala:
for(i=1; i<=n-1; i++)
for(j=i+1; j<=n; j++) a[i][j];
sau
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(j>i) a[i][j];
Sub diagonala principala:
for(i=2; i<=n; i++)
for(j=1; j<=n-1; j++)
a[i][j];
sau
for(i=1; i<=n; i++)
if(j<i) a[i][j];
Diagonala secundara:
for(i=1; i<=n; i++) a[i][n-i+1]; sau
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(j==n-i+1) a[i][j];
Deasupra diagonala secundara:
for(i=1; i<=n-1; i++)
for(j=1; j<=n-1; j++) a[i][j];
sau
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(j<n-i+1) a[i][j];
Sub diagonala secundara:
for(i=2; i<=n; i++)
for(j=n-i+2; i<-n; j++) a[i][j];
sau
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(j>n-i+2) a[i][j];
Simetricul lui a[i][j] fata de diagonala:
-diag. principala: a[j][i];
-diag. secundara: a[n-j+1][n-i+1];