Sunteți pe pagina 1din 48

Liceul Teoretic Dimitrie Bolintineanu Sector 5, Bucuresti

Proiect pentru atestat profesional la informatica

Operatii cu vectori (tablouri unidimensionale)

Profesor coordonator: Vladut Mihaela

Elev: Dan Mihaela

2009

-1-

Operatii cu vectori

-2-

Cuprins

1. Introducere 2. Vectori 3. Prezentarea aplicatiei 4. Codul sursa 5. Bibliografie

Pag: 4 Pag: 5 Pag: 11 Pag: 13 Pag: 39

Introducere
-3-

Un limbaj de programare este un set bine definit de expresii si reguli(sau tehnici) valide de formulare a instructiunilor pentru un computer. Un limbaj de programare are definite un set de reguli sintetice si sematice. El da posibilitatea programatorului sa specifice in mod exact si amanuntit actiunile pe care trebuie sa le execute calculatorul, in ce ordine si cu ce date. Specificarea consta practice in intocmirea/scrierea programelor necesare(programare). Limbajul de programare reprezinta un mijloc de comunicare intre utilizatorul uman, care este programator, si sistemul de calcul. C++ (pronuntat "si plas plas") este un limbaj de programare general. Este un limbaj multi-paradigma cu verificarea statica a tipului variabilelor ce suporta programare procedurala, abstractizare a datelor, programare orientata pe obiect. In anii 90, C++ a devenit unul din cele mai populare limbaje de programare comerciale. Bjarne Stroustrup de la Bell Labs a dezvoltat C++ (initial denumit C cu Clase) n anii 1980 ca o serie de mbunatatiri ale limbajului C. Acestea au nceput cu adaugarea de clase apoi de funcii virtuale, supraincarcarea operatorilor, mostenire multipla, template-uri si exceptii. O data cu evolutia limbajului C++, a evoluat si o biblioteca standard. Prima adaugire a fost biblioteca de intrari/iesiri (I/O stream), care oferea facilitati pentru a nlocui functiile traditonale C cum ar fi printf si scanf. Mai tarziu, printre cele mai semnificative adaugari la biblioteca standard a fost STL (Standard Template Library) (Biblioteca de formate standard). Exemplu: #include<iostream.h> void main() {cout<<"Hello World";} Dupa ani de lucru, un comitet ANSI-ISO a standardizat C++ n 1998.

Vectori (Tablouri unidimensionale)


-4-

Definitie: Se numeste tablou unidimensional sau vector o structura de date de acelasi fel pastrate in memorie intr-o zona de octeti succesivi. Declararea vectorilor: Observatie: La declararea unui vector trebuie precizate : tipul datelor din vector; acest tip se mai numeste si tip de baza; numele vectorului; numarul de componente ale vectorului declarat. tip_baza nume_vector[numar componente]; unde: tip_baza nume_tablou numar componente Observatie: : precizeaza tipul datelor din vector; : precizeaza numele vectorului; : precizeaza cate componente are vectorul (dimensiunea)

Un vector se declara dupa structura:

Pentru a accesa componentele din vector se folosesc indici intregi, cuprinsi intre paranteze drepte. Daca un tablou are n componente: prima componenta are indicele 0 a doua componenta are indicele 1 . ultima componenta are indicele n-1 Exemplu: int v[20]; Comentarii: s-a declarat un vector cu numele v; datele din vector vor fi de tipul int; are 20 de componente; componentele se acceseaza astfel: v[0], v[1], , x[19]. : x[0] : x[1] : x[n-1]

Observatie: Dimensiunea vectorului trebuie sa fie o expresie constanta. Exemplu de declaratii incorecte: int dim=4; int x[dim]; -5-

int y[dim+1]; Aceste declaratii sunt incorecte deoarece: dim si dim+1 nu sunt expresii constante. Observatie: Tipul datelor din tablou, adica tip_baza trebuie sa fie standard sau definit de utilizator inainte de a fi folosit. Observatie: Compilatorul nu face verificarile pentru depasirea dimensiuni vectorului. Astfel scrierile in elementele, din vector, cu indici mai mari decat dimensiunea pot distruge alte date. Initializarea vectorilor: Observatie: Declaratia unui vector poate fi urmata de o secventa de initializare. Secventa de initializare este formata dintr-o pereche de acolade intre care se pun valori ale tipului de baza separate prin virgule. Exemple: int x[3]={6,7,8}; float y[4]={6.1, 7.4, 8e-2, -36}; dupa aceasta declaratie x[0]=6; x[1]=7; x[2]=8; dupa aceasta declaratie y[0]=6.1; y[1]=7.4; y[2]=8e-2; y[3]=-3 Observatie: Atunci cand un vector este initializat, la declarare, poate lipsi dimensiunea. Tabloul va avea atatea elemente cate valori se folosesc la initializare. Exemple: int x[ ]={6,7,8}; float y[ ]={6.1, 7.4, 8e-2, -36}; dupa aceasta declaratie x[0]=6; x[1]=7; x[2]=8; si vectorul va avea 3 componente. dupa aceasta declaratie y[0]=6.1; y[1]=7.4; y[2]=8e-2; y[3]=-3 si vectorul va avea 4 componente. Observatie: Daca la initializarea vectorilor de tip numeric dimensiunea este mai mare decat numarul valorilor folosite restul componetelor sunt initializate cu 0. Exemple: -6-

int x[ 5]={6,7,8}; float y[5 ]={6.1, 7.4}; Observatie:

dupa aceasta declaratie x[0]=6; x[1]=7; x[2]=8; x[3]=0; x[4]=0; dupa aceasta declaratie y[0]=6.1; y[1]=7.4; y[2]=8e-2; y[3]=0;

Daca la initializarea vectorilor de tip numeric dimensiunea este mai mica decat numarul valorilor folosite calculatorul da eroare. Exemple: int x[2]=[3,5,4,6}; float y[1]={6.4, -9,}; Citirea vectorilor: Parcurgerea unui vector se face cu ajutorul instructiunii FOR. Secventa de citire a unui sir de n elemente: int n,v[20]; .. cout<<n=; cin>>n; for(i=0;i<n;i++) cin>>v[i];

SAU int n,v[20]; .. cout<<n=; cin>>n; for(i=0;i<n;i++) { cout<<v[<<i+1<<]=; cin>>v[i]; } Afisarea elementelor: Secventa de afisare a elementelor: for(i=0;i<n;i++) cout<<v[i]<< ; -7-

cout<<endl; Determinarea minimului intr-un vector: min=v[0]; for(i=1;i<n;i++) if ( v[i]<0 && min>v[i] ) min=v[i]; Determinarea maximului intr-un vector: max=v[0]; for(i=1;i<n;i++) if ( v[i]%2==0 && max<v[i] ) max=v[i]; Cautarea binara unui numar in vector: unsigned pi,pf,i,x,mijloc,poz; cout<<x=; cin>>x; pi=0; pf=n-1; for(i=0;i<n;i++) while (pi<=pf) { mijloc=( pi+pf )/2; if(x==v[mijloc]) { poz=i; break; } else if( x<v[mijloc]) pf=mijloc-1; else pi=mijloc+1; } if(pi<=pf) cout<<endl<<x<<" se afla in vectorul v pe pozitia "<<(poz+1)<<'.'; else cout<<endl<<x<<" nu se afla in vectorul v."; Cautarea secventiala unui numar in vector: unsigned i,gasit,poz,x; cout<<"x="; cin>>x; -8-

gasit=0; for(i=0;i<n;i++) if( x==v[i] ) { gasit=1; poz=i; break; } if(gasit) cout<<endl<<x<<" se afla in vectorul v pe pozitia "<<( poz+1 )<<'.'; else cout<<endl<<x<<" nu se afla in vectorul v."; gasit=0; for(i=0;i<m;i++) if( x==t[i] ) { gasit=1; poz=i; break; } if(gasit) cout<<endl<<x<<" se afla in vectorul t pe pozitia "<<( poz+1 )<<'.'; else cout<<endl<<x<<" nu se afla in vectorul t."; Cel mai mare divisor comun dintre elementele unui vector: int a=v[0],b,i; for(i=1;i<n;i++) { b=v[i]; while ( a!=b ) if( a>b ) a-=b; else b-=a; } cout<<"Cel mai mare divizor comun dintre elementele vectorului v este "<<a<<endl;

Prezentarea aplicatiei
Realizarea acestei aplicatii a fost posibila datorita notiunilor invatate pentru utilizarea limbajului de programare Borland C++, precum si a anumitor informatii accumulate in timpul orelor de curs. La baza acestei aplicatii se afla tot ceea ce inseamna operatii cu vectori. -9-

Aplicatia incepe cu aparitia denumirii proiectului, cu numele elevului precum si al clasei caruia ii apartine. Dupa aceea se vor citi numarul de elemente si elementele celor doi vectori pe care se vor efectua operatiile iar dupa citire se vor afisa pe ecran cei doi vectori. Urmatoarea etapa a aplicatiei este aparitia meniului principal, care cuprinde interclasarea, reuniunea, diferenta, intersectia, minimul, maximul si cel mai mare divizor comun dintre cei doi vectori dati, precum si sume, produse , numarare, cautare, constructii si optiunea de a schimba vectorii cu care lucrezi. Ultima optiune din meniul principal este Iesire. Meniul principal are 8 submeniuri care la randul lor au doua sau trei probleme dintre care poti alege. Fiecare submeniu iti da optiunea de a reveni la meniul principal sau de a iesi din program. Optiunile din meniul principal care au submeniu sunt: diferenta, sume, produse, numarare, cautare, constructii, minim si maxim. Programul se termina atunci cand optezi pentru optiunea Iesire din meniul principal sau din submeniuri si iti va afisa mesajul Sfarsit.

Print screen-uri din rularea aplicatiei:

- 10 -

Codul sursa #include<iostream.h>


- 11 -

#include<conio.h> #include<math.h> #include<dos.h> #include<graphics.h> unsigned n,m; int v[50],t[50]; void tema() { int i,j; window(1,1,80,25); textbackground(8); clrscr(); for(i=1;i<=15;i=i+2) for(j=1;j<=10;j++) { if(i==j) {window(i,j,i+50,j+4); textbackground(4); clrscr(); gotoxy(16,2); cout<<"ATESTAT INFORMATICA"; gotoxy(16,3); cout<<"Operatii cu vectori"; gotoxy(12,4); cout<<"Mihaela Dan, Clasa a XII-a A"; delay(1000); textbackground(8); clrscr(); } } window(1,1,80,25); textbackground(8); clrscr(); } void citire(int x[50], unsigned &n) {
- 12 -

unsigned i; cout<<" Dati numarul de elemente ale vectorului: "; do cin>>n; while (n>50); for(i=0;i<n;i++) { cout<<" Elementul "<<(i+1)<<": "; cin>>x[i]; } } void afisare(int u[100], unsigned n) { unsigned i; cout<<" { "; for(i=0;i<n;i++) cout<<u[i]<<' '; cout<<"}"; } void ordonare(int x[50], unsigned n) { int ordonat, i; int aux; do { ordonat=1; for(i=0;i<n-1;i++) if (x[i]>x[i+1]) { ordonat=0; aux=x[i]; x[i]=x[i+1]; x[i+1]=aux; }
- 13 -

} while (!ordonat); } void copiere(int x1[50], int x2[50], unsigned n) { unsigned i; for(i=0;i<n;i++) x2[i]=x1[i]; } void interclasare(int v[50],int t[50], unsigned n, unsigned m) { int c[100], a[50], b[50], n1=n, m1=m; int i,j,k=0; copiere(v,a,n1); copiere(t,b,m1); ordonare(a,n1); ordonare(b,m1); i=0; j=0; while( i<n && j<m ) { if(a[i]<b[j]) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } k++; } if(j==m)
- 14 -

while (i<n) { c[k]=a[i]; i++; k++; } else while(j<m) { c[k]=b[j]; j++; k++; } gotoxy(2,5); cout<<" Vectorul obtinut prin interclasarea celor doi vectori este: \n"; cout<<" z={ "; for(i=0;i<k;i++) cout<<c[i]<<' '; cout<<"}"; } void reuniune() { int x[100]; unsigned int p,i,j,gasit; for(i=0;i<n;i++) x[i]=v[i]; p=n; for(i=0;i<m;i++) { gasit=0; for(j=0;j<n;j++) if(t[i]==v[j]) { gasit=1; break;
- 15 -

} if(!gasit) { x[p]=t[i]; p++; } } gotoxy(2,5);cout<<"Vectorul obtinut prin reuniunea vectorilor v si t este: \n"; cout<<" z={ "; for(i=0;i<p;i++) cout<<x[i]<<' '; cout<<"}"; } void intersectie() { int x[50]; unsigned p=0,j,i; for(i=0;i<n;i++) { for(j=0;j<m;j++) if(v[i]==t[j]) { x[p]=v[i]; p++; break; } } if(p!=0) {c gotoxy(2,5);cout<<"Vectorul obtinut prin intersectarea celor doi vectori este:\n"; cout<<" z={ "; for(i=0;i<p;i++) cout<<x[i]<<' ';
- 16 -

cout<<"}"; } else { gotoxy(2,5); cout<<"Cei doi vectori nu au elemente comune."; } } void diferenta_1() { unsigned p=0,j,i,gasit; int x[50]; for(i=0;i<n;i++) { gasit=0; for(j=0;j<m;j++) if(v[i]==t[j]) { gasit=1; break; } if (!gasit) { x[p]=v[i]; p++; } } if (p!=0) { gotoxy(2,5);cout<<"Vectorul obtinut prin diferenta dintre vectorul v si vectorul t este:\n"; cout<<" z={ "; for(i=0;i<p;i++) cout<<x[i]<<' '; cout<<"}"; } else { gotoxy(2,5); cout<<"Cei doi vectori sunt identici."; }
- 17 -

window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void diferenta_2() { unsigned p=0,j,i,gasit; int x[50]; for(i=0;i<m;i++) { gasit=0; for(j=0;j<n;j++) if(t[i]==v[j]) { gasit=1; break; } if (!gasit) { x[p]=t[i]; p++; } } if(p!=0) { gotoxy(2,5);cout<<"Vectorul obtinut prin diferenta dintre vectorul v si vectorul t este:\n"; cout<<" z={ "; for(i=0;i<p;i++) cout<<x[i]<<' '; cout<<"}"; } else { gotoxy(2,5);cout<<"Cei doi vectori sunt identici."; } window(45,23,80,25);
- 18 -

textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu1(unsigned int &opp) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Diferenta"; window(1,4,80,25); textbackground(8); clrscr(); cout<<"1. Diferenta dintre vectorul v si vectorul t.\n"; cout<<"2. Diferenta dintre vectorul t si vectorul v.\n"; cout<<"3. Revenire la meniul principal\n"; cout<<"4. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();diferenta_1();getch(); break; case 2: clrscr();diferenta_2();getch(); break; case 4: opp=14;break; } }while( op!=3 && op!=4 ); } void suma_1() {
- 19 -

int i; int s=0; for (i=0;i<n;i++) if( i%2==0 && v[i]%3==0 && v[i]%2==0) s+=v[i]; for (i=0;i<m;i++) if( i%2==0 && t[i]%3==0 && t[i]%2==0) s+=t[i]; cout<<" Suma elementelor din vectori care se gasesc pe pozitii pare"<<endl<<"si care sunt divizibile cu 3 si 2 este "<<s; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void suma_2() { int s=0,i; for (i=0;i<n;i++) if( floor(sqrt(v[i]))==sqrt(v[i]) && v[i]%2==0) s+=v[i]; for (i=0;i<m;i++) if( floor(sqrt(t[i]))==sqrt(t[i]) && t[i]%2==0) s+=t[i]; cout<<" Suma elementelor din vectori care sunt patrate perfecte si pare este "<<s; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void suma_3() { int s=0,i;
- 20 -

for (i=0;i<n;i++) if( v[i]>=-1 && v[i]<=25 ) s+=v[i]; for (i=0;i<m;i++) if( t[i]>=-1 && t[i]<=25 ) s+=t[i]; cout<<" Suma elementelor din vectori care se afla in intervalul [1,25] este "<<s; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu2(unsigned int &opp) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Sume"; window(1,4,80,25); textbackground(8); clrscr(); clrscr(); cout<<"1. Suma elementelor din vectori care se gasesc pe pozitii pare"<<endl<<"si care sunt divizibile cu 3 si 2.\n"; cout<<"2. Suma elementelor din vectori care sunt patrate perfecte si pare.\n"; cout<<"3. Suma elementelor din vectori care se afla in intervalul [-1,25]\n"; cout<<"4. Revenire la meniul principal\n";
- 21 -

cout<<"5. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();suma_1();getch(); break; case 2: clrscr();suma_2();getch(); break; case 3: clrscr();suma_3();getch(); break; case 5: opp=14;break; } }while( op!=4 && op!=5 ); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void produs_1() { int p=1,i; for(i=0;i<n;i++) if ( v[i]/5==3 ) p*=v[i]; for(i=0;i<m;i++) if ( t[i]/5==3 ) p*=t[i]; cout<<" Produsul elementelor din vectori care dau la impartirea cu 5 restul 3 este "<<p; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void produs_2() { unsigned i;
- 22 -

long p=1; for(i=0;i<n;i++) if ( v[i]>3 && v[i]<=6 || v[i]>=25 && v[i]<=70 ) p*=v[i]; for(i=0;i<m;i++) if ( t[i]>3 && t[i]<=6 ||t[i]>=25 && t[i]<=70 ) p*=t[i]; cout<<" Produsul elementelor din vectori care se afla in intervalul (0,6]U[25,70] este \n"<<p; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void produs_3() { int i; long p=1; for(i=0;i<n;i++) if ( v[i]>0 ) p=p*v[i]; for(i=0;i<m;i++) if ( t[i]>0 ) p=p*t[i]; cout<<" Produsul elementelor din vectori care sunt pozitive este "<<p; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu3(unsigned int &opp) { unsigned int op; do
- 23 -

{ window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Produse"; window(1,4,80,25); textbackground(8); clrscr(); cout<<"1. Produsul elementelor din vectori care dau la impartirea cu 5 restul 3.\n"; cout<<"2. Produsul elementelor din vectori care se afla in intervalul (0,6]U[25,70].\n"; cout<<"3. Produsul elementelor din vectori care sunt pozitive.\n"; cout<<"4. Revenire la meniul principal\n"; cout<<"5. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();produs_1();getch(); break; case 2: clrscr();produs_2();getch(); break; case 3: clrscr();produs_3();getch(); break; case 5: opp=14;break; } }while( op!=4 && op!=5 ); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void numarare_1() { unsigned int nr=0,i;
- 24 -

for(i=0;i<n;i++) if ( v[i]<0 && v[i]%2==0 ) nr++; for(i=0;i<m;i++) if ( v[i]<0 && v[i]%2==0 ) nr++; if(nr!=0) cout<<" Numarul de elemente din cei doi vectori care sunt pare si negative este "<<nr; else cout<<" Vectorii nu au elemente pare si negetive"; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void numarare_2() { unsigned int nr=0,i; for(i=0;i<n;i++) if ( v[i]%3==0 ) nr++; for(i=0;i<m;i++) if ( v[i]%3==0 ) nr++; if(nr!=0) cout<<" Numarul de elemente din cei doi vectori care sunt divizibile cu 3 este "<<nr; else cout<<" Vectorii nu au elemente care sunt divizibile cu 3."; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void numarare_3()
- 25 -

{ unsigned int nr=0,i; for(i=0;i<n;i++) if ( i%2!=0 ) nr++; for(i=0;i<m;i++) if ( i%2!=0 ) nr++; cout<<" Numarul de elemente din cei doi vectori care se gasesc pe pozitii impare este "<<nr; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu4( unsigned int &opp ) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Numarare"; window(1,4,80,25); textbackground(8); clrscr(); clrscr(); cout<<"1. Numarul de elemente din cei doi vectori care sunt pare si negative.\n";
- 26 -

cout<<"2. Numarul de elemente din cei doi vectori care sunt divizibile cu 3.\n"; cout<<"3. Numarul de elemente din cei doi vectori care se gasesc pe pozitii impare.\n"; cout<<"4. Revenire la meniul principal\n"; cout<<"5. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();numarare_1();getch(); break; case 2: clrscr();numarare_2();getch(); break; case 3: clrscr();numarare_3();getch(); break; case 5: opp=14;break; } }while( op!=4 && op!=5 ); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void maxim_1() { int i; int max=v[0]; for(i=1;i<n;i++) if ( v[i]>0 && max<v[i] ) max=v[i]; for(i=0;i<m;i++) if ( t[i]>0 && max<v[i] ) max=t[i]; cout<<" Maximul elementelor din vectori care sunt pozitive este "<<max; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!";
- 27 -

} void maxim_2() { int i; int max=v[0]; for(i=1;i<n;i++) if ( v[i]%2!=0 && max<v[i] ) max=v[i]; for(i=0;i<m;i++) if ( t[i]%2!=0&& max<v[i] ) max=t[i]; cout<<" Maximul elementelor din vectori care sunt impare este "<<max; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void maxim_3() { int i; int max=v[0]; for(i=1;i<n;i++) if ( v[i]%2==0 && max<v[i] ) max=v[i]; for(i=0;i<m;i++) if ( t[i]%2==0 && max<v[i] ) max=t[i]; cout<<" Maximul elementelor din vectori care sunt divizibile cu 2 este "<<max; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; }
- 28 -

void cautare_1() { unsigned i,gasit,poz,x; cout<<"Dati numarul pe care vreti sa-l cautati."; cin>>x; gasit=0; for(i=0;i<n;i++) if( x==v[i] ) { gasit=1; poz=i; break; } if(gasit) cout<<endl<<x<<" se afla in vectorul v pe pozitia "<<( poz+1 )<<'.'; else cout<<endl<<x<<" nu se afla in vectorul v."; gasit=0; for(i=0;i<m;i++) if( x==t[i] ) { gasit=1; poz=i; break; } if(gasit) cout<<endl<<x<<" se afla in vectorul t pe pozitia "<<( poz+1 )<<'.'; else cout<<endl<<x<<" nu se afla in vectorul t."; window(45,23,80,25); textbackground(4); clrscr();
- 29 -

gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void cautare_2() { unsigned pi,pf,i,x,mijloc,poz; int a[50],b[50]; copiere(v,a,n); copiere(t,b,m); ordonare(a,n); ordonare(b,m); cout<<"Dati numarul pe care vreti sa-l cautati."; cin>>x; pi=0; pf=n-1; for(i=0;i<n;i++) while (pi<=pf) { mijloc=( pi+pf )/2; if(x==v[mijloc]) { poz=i; break; } else if( x<v[mijloc]) pf=mijloc-1; else pi=mijloc+1; } if(pi<=pf) cout<<endl<<x<<" se afla in vectorul v pe pozitia "<<(poz+1)<<'.'; else cout<<endl<<x<<" nu se afla in vectorul v."; pi=0; pf=m-1; for(i=0;i<m;i++)
- 30 -

while (pi<=pf) { mijloc=( pi+pf )/2; if(x==t[mijloc]) { poz=i; break ; } else if( x<t[mijloc]) pf=mijloc-1; else pi=mijloc+1; } if(pi<=pf) cout<<endl<<x<<" se afla in vectorul t pe pozitia "<<(poz+1)<<'.'; else cout<<endl<<x<<" nu se afla in vectorul t."; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu5(unsigned int &opp) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Cautare";
- 31 -

window(1,4,80,25); textbackground(8); clrscr(); clrscr(); cout<<"1. Cautarea secventiala a unui numar dat de la tastatura in cei doi vectori.\n"; cout<<"2. Cautarea binara a unui numar dat de la tastatura in cei doi vectori.\n"; cout<<"3. Revenire la meniul principal\n"; cout<<"4. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();cautare_1();getch(); break; case 2: clrscr();cautare_2();getch(); break; case 4: opp=14;break; } }while( op!=3 && op!=4 ); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void meniu6(unsigned int &opp) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Maxime";
- 32 -

window(1,4,80,25); textbackground(8); clrscr(); clrscr(); cout<<"1. Maximul elementelor din vectori care sunt pozitive.\n"; cout<<"2. Maximul elementelor din vectori care sunt impare.\n"; cout<<"3. Maximul elementelor din vectori care sunt divizibile cu 2.\n"; cout<<"4. Revenire la meniul principal\n"; cout<<"5. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();maxim_1();getch(); break; case 2: clrscr();maxim_2();getch(); break; case 3: clrscr();maxim_3();getch(); break; case 5: opp=14;break; } }while( op!=4 && op!=5 ); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void minim_1() { int min=v[0],i; for(i=1;i<n;i++) if ( v[i]<0 && min>v[i] ) min=v[i]; for(i=0;i<m;i++) if ( t[i]<0 && min>v[i] ) min=t[i];
- 33 -

cout<<"Minimul elementelor din vectori care sunt negative este "<<min; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void minim_2() { int min=v[0],i; for(i=1;i<n;i++) if ( v[i]%2==0 && min>v[i] ) min=v[i]; for(i=0;i<m;i++) if ( t[i]%2==0 && min>v[i] ) min=t[i]; cout<<"Minimul elementelor din vectori care sunt pare este "<<min; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void minim_3() { int min=v[0],i; for(i=1;i<n;i++) if ( i%2==0 && min>v[i] ) min=v[i]; for(i=0;i<m;i++) if ( i%2==0 && min>v[i] ) min=t[i]; cout<<"Minimul elementelor din vectori care se gasesc pe pozitii pare este "<<min; window(45,23,80,25);
- 34 -

textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu7(unsigned int &opp) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Minime"; window(1,4,80,25); textbackground(8); clrscr(); clrscr(); cout<<"1. Minimul elementelor din vectori care sunt negative.\n"; cout<<"2. Minimul elementelor din vectori care sunt pare.\n"; cout<<"3. Minimul elementelor din vectori care se gasesc pe pozitii pare.\n"; cout<<"4. Revenire la meniul principal\n"; cout<<"5. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();minim_1();getch(); break; case 2: clrscr();minim_2();getch(); break; case 3: clrscr();minim_3();getch(); break; case 5: opp=14;break; } }while( op!=4 && op!=5 );
- 35 -

window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void cmmdc(int v[50],int t[50], unsigned n, unsigned m) { int a=v[0],b,c=t[0],d,i; for(i=1;i<n;i++) { b=v[i]; while ( a!=b ) if( a>b ) a-=b; else b-=a; } cout<<"Cel mai mare divizor comun dintre elementele vectorului v este "<<a<<endl; for(i=1;i<m;i++) { d=v[i]; while (c!=d) if( c>d ) c-=d; else d-=c; } cout<<"Cel mai mare divizor comun dintre elementele vectorului t este "<<c<<endl; while ( c!=a ) if( c>a ) c-=a; else a-=c; cout<<"Cel mai mare divizor comun dintre elementele celor doi vectori este "<<c<<endl; window(45,23,80,25);
- 36 -

textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void constructii_1() { unsigned int k,i; float z[50]; k=0; for(i=0;i<n;i++) if( v[i]%3==0 && v[i]>0 ) { z[k]=v[i]; k++; } cout<<"Vectorul care contine toate elementele divizibile cu 3"<<endl<<"si pozitive din vectorul v este: \n"; cout<<"z={ "; for(i=0;i<k;i++) cout<<z[i]<<' '; cout<<"}"; k=0; for(i=0;i<m;i++) if( t[i]%3==0 && t[i]>0 ) { z[k]=t[i]; k++; } cout<<"\nVectorul care contine toate elementele divizibile cu 3"<<endl<<"si pozitive din vectorul t este: \n"; cout<<"z={ "; for(i=0;i<k;i++) cout<<z[i]<<' '; cout<<"}"; window(45,23,80,25);
- 37 -

textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void constructii_2() { unsigned int i,c,k; float z[50]; cout<<"c="; cin>>c; k=0; for(i=0;i<n;i++) if( v[i]==c ) { z[k]=v[i]; k++; } cout<<"Vectorul care contine pozitiile elementelor egale cu 'c' din vectorul v este: \n"; cout<<"z={ "; for(i=0;i<k;i++) cout<<z[i]<<' '; cout<<"}"; k=0; for(i=0;i<m;i++) if( t[i]==c ) { z[k]=t[i]; k++; } cout<<"\nVectorul care contine pozitiile elementelor egale cu 'c' din vectorul t este: \n"; cout<<"z={ "; for(i=0;i<k;i++) cout<<z[i]<<' '; cout<<"}";
- 38 -

window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void constructii_3() { unsigned int i,p,q,k; float z[50]; cout<<"p="; cin>>p; cout<<"q="; cin>>q; k=0; for(i=0;i<n;i++) if( i!=p && i!=q ) { z[k]=v[i]; k++; } cout<<"Vectorul care se obtine prin eliminarea componentelor"<<endl<<"de pe pozitiile "<<p<<" si "<<q<<" din vectorul v este: \n"; cout<<"z={ "; for(i=0;i<k;i++) cout<<z[i]<<' '; cout<<"}"; k=0; for(i=0;i<m;i++) if( i!=p && i!=q ) { z[k]=t[i]; k++; }

- 39 -

cout<<"\nVectorul care se obtine prin eliminarea componentelor"<<endl<<"de pe pozitiile "<<p<<" si "<<q<<" din vectorul t este: \n"; cout<<"z={ "; for(i=0;i<k;i++) cout<<z[i]<<' '; cout<<"}"; window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; } void meniu8(unsigned int &opp) { unsigned int op; do { window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Diferenta"; window(1,4,80,25); textbackground(8); clrscr(); cout<<"1. Sa se construiasca un nou vector care sa contina"<<endl<<"toate elementele divizibile cu 3 si pozitive din cei doi vectori.\n"; cout<<"2. Sa se construiasca un nou vector care sa contina"<<endl<<"pozitiile elementelor egale cu 'c'(numar dat de la tastatura) din cei doi vectori\n"; cout<<"3. Sa se construiasca un nou vector care se obtine"<<endl<<"prin eliminarea componentelor de pe pozitiile p si q date de la tastatura din cei doi vectori\n";
- 40 -

cout<<"4. Revenire la meniul principal\n"; cout<<"5. Iesire\n"; cout<<"Alegeti o optiune: ";cin>>op; switch(op) { case 1: clrscr();constructii_1();getch(); break; case 2: clrscr();constructii_2();getch(); break; case 3: clrscr();constructii_3();getch(); break; case 5: opp=14;break; } }while( op!=4 && op!=5 ); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch(); } void main() { unsigned int opp; tema(); delay(200); citire(v,n); cout<<endl; citire(t,m); clrscr(); cout<<"\n\nVectorul v este:\n "; afisare(v,n); cout<<endl; cout<<"\n\nVectorul t este:\n "; afisare(t,m); cout<<endl; cout<<"\nPentru continuare apasati o tasta!"; getch(); do { clrscr();
- 41 -

window(1,1,80,25); textbackground(8); clrscr(); window(19,3,59,5); textbackground(4); clrscr(); gotoxy(13,2);cout<<"Operatii cu vectori:\n\n\n\n"; window(19,6,59,22); textbackground(1); clrscr(); gotoxy(3,2);cout<<"1. Interclasare"; gotoxy(3,3);cout<<"2. Reuniune"; gotoxy(3,4);cout<<"3. Intersectie"; gotoxy(3,5);cout<<"4. Diferenta"; gotoxy(3,6);cout<<"5. Sume"; gotoxy(3,7);cout<<"6. Produse"; gotoxy(3,8);cout<<"7. Numarare"; gotoxy(3,9);cout<<"8. Cautare"; gotoxy(3,10);cout<<"9. Maxim"; gotoxy(2,11);cout<<"10. Minim"; gotoxy(2,12);cout<<"11. Cel mai mare divizor comun"; gotoxy(2,13);cout<<"12. Constructii"; gotoxy(2,14);cout<<"13. Schimbarea Vectorilor"; gotoxy(2,15);cout<<"14. Iesire"; gotoxy(2,16);cout<<"Alegeti o optiune: "; cin>>opp; switch (opp) { case 1: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Interclasare"; window(1,4,80,25); textbackground(8); clrscr();
- 42 -

interclasare(v,t,n,m); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch();break; case 2: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Reuniune"; window(1,4,80,25); textbackground(8); clrscr(); reuniune(); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch();break; case 3: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Intersectie"; window(1,4,80,25); textbackground(8); clrscr(); clrscr();intersectie(); window(45,23,80,25); textbackground(4);
- 43 -

clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch();break; case 4: meniu1(opp);getch();break; case 5: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Sume"; window(1,4,80,25); textbackground(8); clrscr(); meniu2(opp);getch();break; case 6: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Produse"; window(1,4,80,25); textbackground(8); clrscr(); meniu3(opp);getch();break; case 7: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Numarare"; window(1,4,80,25); textbackground(8); clrscr();
- 44 -

meniu4(opp);getch();break; case 8: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Cautare"; window(1,4,80,25); textbackground(8); clrscr(); meniu5(opp);break; case 9: window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Maxim"; window(1,4,80,25); textbackground(8); clrscr(); meniu6(opp);getch();break; case 10:window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Minim"; window(1,4,80,25); textbackground(8); clrscr(); meniu7(opp);getch();break; case 11:window(1,1,80,25); textbackground(8); clrscr();
- 45 -

window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Cel mai mare divizor comun"; window(1,4,80,25); textbackground(8); clrscr(); cmmdc(v,t,n,m); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch();break; case 12:window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Constructii"; window(1,4,80,25); textbackground(8); clrscr(); meniu8(opp);getch();break; case 13:window(1,1,80,25); textbackground(8); clrscr(); window(1,1,80,3); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Schimbarea vectorilor"; window(1,4,80,25); textbackground(8); clrscr();

- 46 -

citire(v,n);citire(t,m);clrscr();cout<<"Vectorul v este: ";afisare(v,n);cout<<endl;cout<<"Vectorul t este: ";afisare(t,m); window(45,23,80,25); textbackground(4); clrscr(); gotoxy(2,2);cout<<"Pentru continuare apasati o tasta!"; getch();break; } } while (opp!=14); clrscr(); cout<<"sfarsit"; }

Bibliografie
- 47 -

Manual de informatica clasa a IX a, Editura Arves, Cristian Udrea , Claudia Elena Udrea, Dan Cristian Tacu, Diana Nicoleta Udrea Manual de informatica clasa a XI a, Editura Didactica si Pedagogica, Mariana Milosescu

- 48 -

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