Documente Academic
Documente Profesional
Documente Cultură
V6
Chisinau-2020
Tema: Structura – mecanism de abstractizare
Scopul lucrării:
Studierea programării prin abstractizarea datelor;
Studierea regulilor de definire şi utilizare a structurilor de date;
Crearea variabilelor de tip structură, accesarea componentelor unei structuri.
Întrebări de control:
-Desigur, la fel cum poate contine un pointer spre alte structure sau elemente, poate contine si adresa
ei;
-Da, prin urmarea functiei NEW pentru creare si DELETE pentru eliberarea memoriei.
Prin referinta putem manipula structura fara a fi nevoie de transmis prin functii delete propriu zise a
structurii,doar prin referinta putem manipula datele din memorie, fara a fi nevoie de a fi reutilizare
Varianta 6.
6. Să se creeze tipul abstract de date (structura) – vector, care se compune dintr-un pointer spre double
şi din numărul de elemente. Să se definească funcţiile: de iniţializare, de eliminare a unui vector; de
setare/ modificare a dimensiunii vectorului; de acces la elementele vectorului; de calcul a sumei
elementelor pozitive ale unui vector. În funcţia main să se exemplifice înmulţirea unui vector cu un
număr.
-Codul
#include <iostream>
using namespace std;
struct vector {
double *tab;
int nr_elem;
};
int main() {
vector *V1 ,*V2 ;
int a, optiune, var, x;
while (1) {
system("cls");
cout << " Meniu" << endl;
cout << "1. Initializarea " << endl;
cout << "2. Eliminarea unui vector" << endl;
cout << "3. Modificare a dimensiunii vectorului" << endl;
cout << "4. Acces la elementele vectorului" << endl;
cout << "5. calcul a sumei elementelor pozitive ale unui vector " << endl;
cout << "6. inmultirea vectorului cu un numar " << endl;
cout << "7.iesire din program " << endl;
cout << "Alegeti optiunea ";
cin >> optiune;
switch (optiune) {
case 1:
cout <<"doriti sa initializati vectorul 1? 1/0 " ; cin >> var;
if (var == 1){
cout << "Initializare 1 vector" << endl;
V1 = new vector;
if (V1 == nullptr) cout << "Memoria nu a fost alocata pentru vectorul 1!";
initializare(V1);
adaugare_elem(V1);
}
cout <<"doriti sa initializati vectorul 2? 1/0 " ;cin >> var;
if (var == 1){
cout << "Initializare 2 vector" << endl;
V2 = new vector;
if (V2 == nullptr) cout << "Memoria nu a fost alocata pentru vectorul 2!";
initializare(V2);
adaugare_elem(V2);
}
system("pause");
break;
case 2:
cout << "Doriti sa eliminati vectorul 1? 1/0 "<< endl;
cin >> var;
if (var == 1)
eliminare(V1);
cout << "Doriti sa eliminati vectorul 2? 1/0 "<< endl;
cin >> var;
if (var == 1)
eliminare(V2);
system("pause");
break;
case 3:
cout << "Doriti sa modificati vectorul 1? 1/0 "<< endl;
cin >> var;
if (var == 1) {
modificare(V1);
adaugare_elem(V1);
}
cout << "Doriti sa modificati vectorul 2? 1/0 "<< endl;
cin >> var;
if (var == 1) {
modificare(V2);
adaugare_elem(V2);
}
system("pause");
break;
case 4:
cout << "Doriti sa aveti acces la vectorul 1? 1/0 "<< endl;
cin >> var;
if (var == 1)
afisare(V1);
cout << "Doriti sa aveti acces la vectorul 2? 1/0 "<< endl;
cin >> var;
if (var == 1)
afisare(V2);
system("pause");
break;
case 5:
cout << "Doriti sa aflati suma nr pozitive a vectorului 1? 1/0 "<< endl;
cin >> var;
if (var == 1)
suma(V1);
cout << "Doriti sa aflati suma nr pozitive a vectorului 2? 1/0 "<< endl;
cin >> var;
if (var == 1)
suma(V2);
system("pause");
break;
case 6:
cout << "Doriti sa inmultiti 1 vector? 1/0 "<< endl;
cin >> var;
if (var == 1) {
cout << "Cu ce nr doriti sa inmultiti vectorul? : "<< endl;
cin >> x;
for (int i = 0; i < V1->nr_elem; i++) {
V1->tab[i] = V1->tab[i] * x;
}
}
cout << "Doriti sa inmultiti 2 vector? 1/0 "<< endl;
cin >> var;
if (var == 1) {
cout << "Cu ce nr doriti sa inmultiti vectorul? : "<< endl;
cin >> x;
for (int i = 0; i < V2->nr_elem; i++) {
V2->tab[i] = V2->tab[i] * x;
}
}
system("pause");
break;
case 7:
return 0;
}
}
return 0;
}
-Rezultat: