lucr3
TRANSCRIPT
7/24/2019 Lucr3
http://slidepdf.com/reader/full/lucr3 1/2
L3-1
L3. Lucrarea3: Proceduri de ordonare.Program ordonare sir. Varianta C++.
#include <iostream.h>
#include <conio.h>
typedef float vect[100];
void ordon_sir(int n, vect t) //Ordonare crescatoare a unui sir numeric{float a; int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(t[i]>t[j]) {a=t[i]; t[i]=t[j]; t[j]=a;}
}
void main()
{char ch;
int i,n;
vect a;
cout << "Introduceti lungimea sirului, n=";
cin >> n;
cout << "Introduceti valorile sirului:\n";
for(i=0;i<n;i++)
{cout << "a[" << i <<"]="; cin >> a[i];}
ordon_sir(n,a);
cout << "Sirul ordonat este:\n";
for(i=0;i<n;i++) cout << "a[" << i <<"]=" << a[i] << "\n";
ch=getch();
}
Varianta EXCEL
A B C D E F G H I
1
2 i= 1 2 3 4 53 a[i]= 3 7 11 5 14
4 ordon descresc 14 11 7 5 3
5 ordon cresc 3 5 7 11 14
6
7
8
Fig.5.4.
Problema ordon!rii cresc!toare a sirului de valori poate fi rezolvat! în EXCEL cu ajutorul tabelului dinfigura 5.4, prin urm!toarea procedur !:
• Se completeaz! "irul indicilor i în celulele C2:G2;• Se completeaz! "irul de valori de ordonat a[i] în celulele C3:G3;• Se selecteaz! domeniul de celule C3:G3;• Din meniul Insert > Name > Define se deschide cutia de dialog Define Name;• În câmpul de editare Names in Workbook se scrie denumirea vector "i se apas! butonul OK .
Astfel, domeniul C3:G3 cap!t! numele vector. Aceasta face ca la opera#iile de extindere prin comenzile Copy -
Paste a unei formule care con#ine acest nume, s! nu mai fie aplicat! procedura de ajustare automat! a referin#elor cu valoarea deplasamentului de copiere, ajustare care ar putea vicia parametrii func#iilor con#inute de formul!;
• În celula C4 se introduce formula =LARGE(vector;C2). Aceast! func#ie selecteaz! valoarea ceamai mare de indice numeric egal cu valoarea celulei C2 din seria de valori ale domeniului vector ordonatedescresc!tor. Cum indicele numeric con#inut în celula C2 este 1, rezult! c! este selectat! prima valoare maimare din "ir;
• Se selecteaz! celula C4;• Din meniul Edit > Copy;• Se selecteaz! domeniul D4:G4;• Din meniul Edit > Paste. Astfel, formula=LARGE(vector;C2) devine succesiv
La cuprins
7/24/2019 Lucr3
http://slidepdf.com/reader/full/lucr3 2/2
L3-2
=LARGE(vector;D2), =LARGE(vector;E2), ..., ajustarea automat! a referin#ei având loc numai pentru celuleleD2, E2, ..., care con#in indicii i, referin#a vector r !mânând neschimbat!. Ca rezultat, în domeniul C4:G4 esteafi"at "irul de valori sortat în ordine descresc!toare.
Pentru a ob#ine "irul ordonat cresc!tor, în continuare se procedeaz! astfel:• Se selecteaz! domeniul de celule C4:G4;• Din meniul Insert > Name > Define se deschide cutia de dialog Define Name;• În câmpul de editare Names in Workbook se scrie denumirea descresc "i se apas! butonul OK .•
În celula C5 se scrie formula =INDEX(descresc;1;6-C2). Aici 6 este lungime_ !ir+1=5+1. Func#iaIndex “vede” "irul ordonat descresc!tor ca pe o matrice cu un rând "i n=5 coloane "i selecteaz! de pe primul eirând valoarea de indice 6-C2;
• Se selecteaz! celula C5;• Din meniul Edit > Copy;• Se selecteaz! domeniul D5:G5;• Din meniul Edit > Paste. Astfel, formula =INDEX(descresc;1;6-C2). devine succesiv
=INDEX(descresc;1;6-D2), =INDEX(descresc;1;6-E2), ..., fiind afectat! de ajustarea automat! numai referin#ade indice D2, E2, etc. În urma acestei opera#ii, domeniul C5:G5 va afi"a "irul ordonat descresc!tor.
Extinderea tabelului, figura 5.5, se poate face astfel. Pentru simplitate s! presupunem c! "irul este mailung cu $. Procedura de extindere este valabil! "i pentru extindere cu mai mult de o unitate, "i este urm!toarea:
A B C D E F G H I
1
2 i= 1 2 3 4 5 6
3 a[i]= 3 7 11 5 14 25
4 ordon descresc 25 14 11 7 5 3
5 ordon cresc 3 5 7 11 14 25
6
7
8
Fig.5.5.
•
Se completeaz! celula H2 cu urm!torul indice, i=6. Deci lungimea "irului devine n=6;• Se completeaz! celula H3 cu noul element de tablou, fie acesta a[6]=25;• Se selecteaz! domeniul C3:H3;• Din meniul Insert > Name > Define se deschide cutia de dialog Define Name;• În cutia de listare Names in Workbook se selecteaz! denumirea vector. În câmpul de editare
Refers to, prin rescriere, se modific! referin#a de domeniu din =Sheet1!$C$3:$G$3 în =Sheet1!$C$3:$H$3 "ise apas! butonul OK (aici s-a presupus c! se lucreaz! în foaia Sheet1);
• Se selecteaz! celula G3;• Din meniul Edit > Copy;• Se selecteaz! celula H3;• Din meniul Edit > Paste;• Se redefine"te domeniul descresc de la C4:G4 la C4:H4 asem!n!tor cu redefinirea domeniului
vector;• Se selecteaz! celula C5;• În bara de editare, se modific! formula =INDEX(descresc;1;6-C2) prin =INDEX(descresc;1;7-
C2);• Cu celula C5 selectat! se ac#ioneaz! meniul Edit > Copy;• Se selecteaz! domeniul D5:H5;• Din meniul Edit > Paste;
Restrângerea tabelului se poate efectua asem!n!tor cu extinderea.