lucr3

2
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 5 3 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 din figura 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 cea mai mare de indice numeric egal cu valoarea celulei C2 din seria de valori ale domeniului vector ordonate descresc!tor. Cum indicele numeric con#inut în celula C2 este 1, rezult! c! este selectat! prima valoare mai mare 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

Upload: cornelgg474469

Post on 24-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lucr3

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

Page 2: Lucr3

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.