Documente Academic
Documente Profesional
Documente Cultură
Raport
la lucrarea de laborator nr. 6
A efectuat:
Chișinău – 2017
Scopul lucrării: familiarizarea studenţilor cu clase şi funcţii generice.
Sarcina:
Varianta 7:
Să se scrie un program care implimentează o clasă generică și realizează algoritmul de sortare:
Quick Sort [partitionare]
Listing-ul programului:
#include <iostream>
#include <cstdlib>
Heap_Sort() {}
void add() {
cout << "\t\tIntrodu nr de elemente al sirului:";
cin >> n;
a = new Tip[n];
for (int i = 0; i < n; i++) {
cout << "\t\tIntrodu elementul " << i + 1 << ": ";
cin >> a[i];
}
}
void add_rand() {
cout << "\t\tIntrodu nr de elemente al sirului:";
cin >> n;
a = new Tip[n];
for (int i = 0; i < n; i++) {
a[i] = 50 - rand()%100;
}
}
void add_rand_f() {
cout << "\t\tIntrodu nr de elemente al sirului:";
cin >> n;
a = new Tip[n];
for (int i = 0; i < n; i++) {
a[i] = 500 - rand() % 1000;
a[i] /= 100;
}
}
void sortselect()
{
int i, k, locmin;
Tip min;
for (k = 0; k < n - 1; k++)
{
min = a[k];
locmin = k;
for (i = k + 1; i < n; i++)
if (a[i]<min)
{
min = a[i];
locmin = i;
}
a[locmin] = a[k];
a[k] = min;
}
}
void afis() {
cout << "\n\t\tSortarea :" << endl;
cout << "\t\t\tSir = { ";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << "}" << endl;
}
};
int main() {
int t,f;
Heap_Sort <int> S;
Heap_Sort <float> F;
while (1) {
system("cls");
cout << "\t+--------------------------------+" << endl;
cout << "\t|\t Meniu \t |" << endl;
cout << "\t|\t |" << endl;
cout << "\t|\t1.Creare sir manual\t |" << endl;
cout << "\t|\t2.Creare sir random\t |" << endl;
cout << "\t|\t0.Esire\t\t\t |" << endl;
cout << "\t+--------------------------------+" << endl;
cout << "\n\t Sarcina: ";
cin >> t;
switch (t) {
case 1: {
system("cls");
cout << "\t+--------------------------------+" << endl;
cout << "\t|\t |" << endl;
cout << "\t|\tAlegeti tipul sirului\t |" << endl;
cout << "\t|\t1.Intreg (int)\t\t |" << endl;
cout << "\t|\t2.Real (float)\t\t |" << endl;
cout << "\t+--------------------------------+" << endl;
cout << "\n\t Tipul: ";
cin >> t;
switch (t) {
case 1: {
Heap_Sort <int> S;
S.add();
S.sortselect();
S.afis();
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
case 2: {
Heap_Sort <float> F;
F.add();
F.sortselect();
F.afis();
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
default: {
cout << "\n\t\t* Optiune introdusa incorect !" << endl;
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
}
break;
}
case 2: {
system("cls");
cout << "\t+--------------------------------+" << endl;
cout << "\t|\t |" << endl;
cout << "\t|\tAlegeti tipul sirului\t |" << endl;
cout << "\t|\t1.Intreg (int)\t\t |" << endl;
cout << "\t|\t2.Real (float)\t\t |" << endl;
cout << "\t+--------------------------------+" << endl;
cout << "\n\t Tipul: ";
cin >> t;
switch (t) {
case 1: {
Heap_Sort <int> S;
S.add_rand();
S.sortselect();
S.afis();
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
case 2: {
Heap_Sort <float> F;
F.add_rand_f();
F.sortselect();
F.afis();
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
default: {
cout << "\n\t\t* Optiune introdusa incorect !" << endl;
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
}
break;
}
case 0: {
return EXIT_SUCCESS;
}
default: {
cout << "\n\t\t* Optiune introdusa incorect !" << endl;
cout << "\n\t\t* Tasteaza '1' pentru a continua sau '0' pentru iesire : "; cin >> f;
if (f)
break;
else
return EXIT_SUCCESS;
}
}
}
}
Rezultatele programului: