Documente Academic
Documente Profesional
Documente Cultură
Se aplica doar pe un vector ordonat (fie crescator fie descrescator). Pentru implementarea algoritmului vom folosi urmatoarele variabile: Stindicele celui mai din stanga element din vector Drindicele celui mai din dreapta element din vector Mij=(st+dr)/2indicele din mijlocul vectorului Gasit (care poate fi 1 sau 0) ajuta la implementarea metodei falsei ipoteze N=7 V=1 V=(-1,15,29,30,37,45,63) X=15(valoarea de cautat) Mij=(0+6)div 2=3 X=v[mij]=? 15=30? NU St=0; dr=mij-1 Mij=(0+2)div 2=1 X=v[mij]?DA Gasit=1 //citeste x si vector Gasit=0;//presupunem sa x nu se gaseste in vector St=0;dr=n-1; While(st<=dr&&gasit==0) {mij=(st+dr)/2; If(x==v[mij]) Gasit=1; Else If(x<v[mij]) Dr=mij-1; Else St=mij+1; } If(gasit==1) Cout<<am gasit; Else Cout<<nu am gasit;
Ce modificare trebuie facuta pe algoritm pentru a cauta o valoare x intr-un vector ordonat descrescator ? //citeste x,vector Gasit=0; St=0;dr=n-1; While(st<=dr&& gasit==0)
{mij=(st+dr)/2 if(x==v[mij]) gasit=1; else if(x<v[mij]) dr=mij+1; else st=mij-1; } If(gasit==1) Cout<<am gasit|; Else Cout<<nu am gasit;
A sorta elementele unui vector inseamna a le ordona unul fata de celalalt in functie de criteriul dat.In cazul algoritmului de sortare prin selectie directa fiecare element joaca rolul unui pivot fiind comparat cu restul elementelor aflate dupa el in vector. Elementele pivot sunt parcurse cu un contor i cu valori de la 0 pana la n-2 inclusiv. Restul elementelor cu care se compara pivotul sunt parcurse cu un contor j care pleaca de la i+1 pana la n-1 inclusiv.La fiecare pas se compara v[i] cu v[j] si daca nu este respectata ordinea fie crescatoare fie descrescatoare atunci cele 2 elemente se interschimba prin metoda paharelor //citire n,vector; //sortare crescatoare For(i=0;i<n-1;i++) For(j=n+1;i<n;i++) If(v[i]>v[j]) {aux=v[i]; V[i]=v[j]; V[j]=aux; } //Afisare vector
Se citeste de la tastatura un vector v cu n elemente numere naturale.Se cere sa se afiseze cel mai mare numar care se poate form cu prima cifra a fiecarui element din vector #include<ioastream.h> Void main() {Unsigned i,n,v[100]; Cout<<n=;cin>>n; For(i=0;i<n;i++) {cout<<[<<i+1<<]=; Cin>>v[i]; } For(i=0;i<n;i++) {while(v[i]>9) V[i]=v[i]/10; } }
Este matricea la care numarul de linii este egal cu numarul de coloane N=m Operatiile de citire si de afisare in cazul matricii patratice vor ramane la fel cu modificarea ca atat i cat si j vor avea valori cuprinse intre 0 si n Caracteristicile matricii patratice: A= Elem. deasupra Diag. principale
Matricea patratica
Elem.sub Diag.principala
Diag.principala
Elemente pe diagonala principala I=j a) For(i=0;i<n;i++) For(j=0;j<n;j++) If(i==j) <prelucreaza a[i][j]> b) For(i=0;i<n;i++) <prelucreaza a[i][j]> Elemente aflate sub diagonala principala
Diag .secundara
Elemente de pe diagonala secundara I+j=n-1 Elemente aflate deasupra diagonalei secundare I+j<n-1 Elemente aflate sub diagonala secundara I+j>n-1 Se citeste de la tastatura un numar natural n si apoi se citesc pe rand cele n*n elemente ale unei matrici patratice .Se cere: a) Sa se calculeze suma elementelor aflate pe diagonala principala b) Sa se calculeze produsul elementelor aflate pe diagonala secundara c) Determinati cate patrate perfecte se afla deasupra diagonalei principale # include<iostream.h> Void main() {Int a[10][10],i,n,j, Cout<<n=;cin>>n; For(i=0;i<n;i++) For(j=0;j<n;j++) {cout<<a[<<i+1<<j+1<<]=; Cin>>a[i][j]; } Int s=0; For(i=0;i<n;i++) For(j=0;j<n;j++) If(i==j) S=s+a[i][j]; Cout<<s=<<endl; Int p=1; For(i=0;i<n;i++) For(j=0;j<n;j++) If(i+j=n-1) P=p*a[i][j]; Cout<<p=<<endl; Int nr=0; For(i=0;i<n;i++) For(j=0;j<n;j++) If(i<j)&&(sqrt a[i][j]==(int)(sqrt (a[i][j]) Nr++; Cout<<nr=;<<endl; }
Scrieti un program care citeste de la tastatura un numar natural n ,construieste in memorie si afiseaza pe ecran o matrice nu n linii si n coloane in care elementele de pe cele 2 diagonale sunt egale cu 0, elementele care se afla deasupra ambelor diagonale sunt egale cu 1,elementele care se afla sub ambele diagonale sunt egale cu 2 iar restul sunt egale cu 3 #include<iostream.h> Void main() {int a[50][50],i,j,n; Cout<<n=;cin>>n; For(i=0;i<n;i++) For(j=0;j<n;j++) If(i==j&&i+j==n-1) A[i][j]=0; If(i<j&&i+j<n-1) A[i][j]=1; If(i>j&&i+j>n-1) A[i][j]=2; Else A[i][j]=3; For(i=0;i<n;i++) {for(j=0;j<n;j++) Cout<<a[i][j]<< ; Cout<<endl; } }