Sunteți pe pagina 1din 9

Cautarea secventiala este un algoritm prin care putem sa cautam o anumita valoare in interiorul

unui vector. Programul scris mai jos citeste un vector de la tastatura dupa care verifica daca o
anumita valoare introdusa de utilizator este sau nu memorata in vectorul deja citit.

Algoritmul scris in C++:


#include <iostream>
using namespace std;
int v[100],n,i,x,ok;
int main ()
{
cin>>n; //se citeste numarul de elemente din vector
for(i=1;i<=n;i++)
cin>>v[i]; //se citesc elementele din vector
cin>>x; //se citeste valoarea pe care vrem sa o cautam
ok=0; // se initializaeaza variabila OK cu 0
for(i=1;i<=n;i++)
{
if(v[i]==x)
ok=1; // variabila OK isi modifica valoarea atunci cand gasim X-ul citit mai devreme in vector
}
if(ok==1)
cout<<"gasit";
else
cout<<"nu exsita";
return 0;
}

Algoritmul de mai jos verifica de cate ori apare o anumita valoare (in cazul nostru valoarea
memorata in variabila x) in interiorul unui vector citit de la tastatura.

Algoritm C++:
#include <iostream>
using namespace std;
int v[100],i,n,x,nr;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>x;

1
for(i=1;i<=n;i++)
{
if(v[i]==x)
nr++;
}
cout<<x<<" apare de "<<nr<<" ori in vector";
}

sortarea prin interschimbare a unui vector cu N elemente citite de la tastatura. N-ul este, de
asemenea, citit de la tastatura. In josul paginii puteti gasi de asemenea videoul de pe canalul
nostru de YouTube in care explicam cum functioneaza algoritmul.

Sortare crescatoare:

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int j;
for (i = 1; i <= N-1; i++){
for (j = i+1; j <= N; j++){
if (v[i] > v[j]){
int aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
for (i = 1; i <= N; i++)
cout<<v[i]<<" ";
return 0;
}
 

Sortare descrescatoare:

2
#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int j;
for (i = 1; i <= N-1; i++){
for (j = i+1; j <= N; j++){
if (v[i] < v[j]){
int aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
for (i = 1; i <= N; i++)
cout<<v[i]<<" ";
return 0;
}

Fiind dat un vector v de N elemente, atat N, cat si vectorul v, fiind citite de la tastatura, se cere sa
se gaseasca minimul si maximul dintre elementele vectorului.

Maximul unui vector C++:

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int maxim = v[1];
for (i = 2; i <= N; i++)
if (maxim < v[i])
maxim = v[i];

3
cout<<maxim;
return 0;
}

Programul de mai jos insereaza un nou element pe prima pozitie a vectorului nostru (nota: prima
pozitie a vectorului in cazul nostru este v[1], intrucat incep citirea elementelor de la i=1).
Algoritmul de mai jos se preda de obicei in clasa a 10-a, facand parte din problemele
introductorii legate de vector pe care profesorii le fac impreuna cu elevii.

#include <iostream>
using namespace std;
int v[100],i,n,x;
int main()
{
cin>>n;
for(i=1;i<=n;i++) //citire
cin>>v[i];
n=n+1; //creare "loc" nou
for(i=n;i>=2;i--) //mutare elemente la dreapta
{
v[i]=v[i-1];
}
cin>>x; // citire element nou
v[1]=x; // inserarea pe prima pozitie
for(i=1;i<=n;i++)//afisare
cout<<v[i]<<" ";
}

Se citesc de la tastatura un numar natural N si un vector de N elemente intregi. Dupa care,


utilizatorul trebuie sa introduca valoarea pe care doreste sa o adauge in vector, cat si pozitia pe
care vrea sa fie introdusa acea valoare. Se afiseaza vectorul rezultat in urma inserarii.

Inserare element pe o pozitie data:

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;

4
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int pozitie,valoare;
cin>>valoare>>pozitie;
for (i = N; i >= pozitie; i--)
v[i + 1] = v[i];
N = N + 1;
v[pozitie] = valoare;
for (i = 1; i <= N; i++)
cout<<v[i]<<" ";
return 0;
}

Se citesc de la tastatura un numar natural N, un vector de N elemente intregi si pozitia de pe care


se doreste a fi sters elementul. Se afiseaza vectorul rezultat in urma eliminarii numarului de pe
pozitia citita anterior.

Eliminare element de pe o pozitie data:

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int pozitie;
cin>>pozitie;
for (i = pozitie; i <= N - 1; i++)
v[i] = v[i+1];
N = N - 1;
for (i = 1; i <= N; i++)
cout<<v[i]<<" ";
return 0;
}
Cel mai mare divizor comun (cmmdc) al unui vector:

5
#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int cmmdc = v[1];
for (i = 2; i <= N; i++){
int copieEL = v[i];
while (copieEL != cmmdc){
if (copieEL > cmmdc)
copieEL = copieEL - cmmdc;
else if (copieEL < cmmdc)
cmmdc = cmmdc - copieEL;
}
}
cout<<cmmdc;
return 0;
}

Cel mai mic multiplu comun (cmmmc) al unui vector:

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
int cmmmc = v[1];
for (i = 2; i <= N; i++){
int copieCmmmc = cmmmc,copieEL = v[i];
while(copieCmmmc != copieEL){
if (copieCmmmc > copieEL)
copieCmmmc = copieCmmmc - copieEL;
else if (copieEL > copieCmmmc)
copieEL = copieEL - copieCmmmc;

6
}
cmmmc = cmmmc*(v[i]/copieEL);
}
cout<<cmmmc;
return 0;
}

Enunt: Sa se afiseze elementele pare ale unui vector citit de la tastatura. Programul de mai jos
parcurge vectorul element cu element iar atunci cand intalneste un element care este par, il
afiseaza pe ecran, in caz contrar, pur si simplu continua citirea pana la gasirea unui viitor element
par.

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N ; i++)
cin>>v[i];
for (i = 1; i <= N; i++)
if (v[i] % 2 == 0)
cout<<v[i]<<" ";
return 0;
}

Enunt: Sa se afiseze elementele impare ale unui vector citit de la tastatura. Programul de mai jos
citeste si memoreaza elemente in interiorul unui vector. Pentru a afisa elementele impare din
vector, acesta este parcurs element cu element si in cazul in care un element este impar (adica
daca trece testul if(v[i]%2==1)) atunci elementul respectiv este afisat pe ecran.

Rezolvare:

#include <iostream>
using namespace std;
int main(){
int N;

7
cin>>N;
int v[100];
int i;
for (i = 1; i <= N ; i++)
cin>>v[i];
for (i = 1; i <= N; i++)
if (v[i] % 2 == 1)
cout<<v[i]<<" ";
return 0;
}

Se afiseaza elementele de pe pozitiile pare ale unui vector, dupa care, in continuarea lor, cele de
pe pozitii impare.

#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int v[100];
int i;
for (i = 1; i <= N; i++)
cin>>v[i];
for (i = 2; i <= N; i = i + 2)
cout<<v[i]<<" ";
for (i = 1; i <= N; i = i + 2)
cout<<v[i]<<" ";
return 0;
}

Se citeste un numar foarte mare de elemente cu doua cifre de la tastatura (retinerea lor intr-un
vector devine imposibila din cauza spatiului ocupat). Se doreste afisarea elementului care apare
de cele mai multe ori in sir. Stiind ca numerele citite sunt intre 10 si 99, putem folosi vectorul
frecventa, pentru a retine numarul de aparitii al fiecarui numar – frecv[a] retine de cate ori apare
numarul a in sir.

#include <iostream>
using namespace std;
int frecv[100];

8
int main(){
int element;
while(cin>>element){
frecv[element]++;
}
int maxim = 0,el = 0, i;
for (i = 10;i < 100; i++)
if(frecv[i] > maxim){
maxim = frecv[i];
el = i;
}
cout<<el<<" "<<maxim;
return 0;
}

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