Sunteți pe pagina 1din 8

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică şi Microelectronică


Departamentul Ingineria Software și Automatică

Disciplina: Programarea Orientată pe Obiecte

RAPORT
Lucrarea de laborator nr.1
Tema: ” Structura – mecanism de abstractizare”

A efectuat studentul: Corcodel Marius

A controlat: Lisnic Inga, lector universitar, DISA

Chișinău 2021
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.

#include <iostream>
#include <string.h>

using namespace std;

struct computer
{
char *firma;
char *procesor;
float frecventa;
};

void set(computer *comp, int nr_calc)


{
for (int i = 0; i < nr_calc; i++)
{
comp[i].firma = new char[21];
comp[i].procesor = new char[21];
cout << "Introduceti firma producatoare: ";
cin >> comp[i].firma;
cout << "Introduceti modelul procesorului: ";
cin >> comp[i].procesor;
cout << "Introduceti frecventa de tact (GHz): ";
cin >> comp[i].frecventa;
cout << endl;
}
}

void modificare(computer *comp, int nr_calc)


{
int i;
cout << "Care element doriti sa-l modificati?\n";
cin >> i;
i--;
cout << "Introduceti firma noua: ";
cin >> comp[i].firma;
cout << "Introduceti modelul nou: ";
cin >> comp[i].procesor;
cout << "Introduceti frecventa noua: ";
cin >> comp[i].frecventa;
}

void comparatie(computer *comp, int nr_calc)


{
cout << "Procesorul cu ce mai mare frecventa este:\n";
float frec = comp[0].frecventa;
for (int i = 0; i < nr_calc; i++)
{
if (comp[i].frecventa > frec)
{
frec = comp[i].frecventa;
}
}

for (int i = 0; i < nr_calc; i++)


{
if (comp[i].frecventa == frec)
{
cout << "\nFirma producatoare: " << comp[i].firma;
cout << "\nModelul procesorului: " << comp[i].procesor;
cout << "\nFrecventa de tact: " << comp[i].frecventa << " GHz\n";
}
}
}

void afisare(computer *comp, int nr_calc)


{
for (int i = 0; i < nr_calc; i++)
{
cout << "\nFirma producatoare: " << comp[i].firma;
cout << "\nModelul procesorului: " << comp[i].procesor;
cout << "\nFrecventa de tact: " << comp[i].frecventa << " GHz\n";
}
}
int main()
{
int nr_calculatoare;
cout << "Introduceti numarul de calculatoare: ";
cin >> nr_calculatoare;
computer *comp = new computer[nr_calculatoare];
set(comp, nr_calculatoare);
modificare(comp, nr_calculatoare);
afisare(comp, nr_calculatoare);
comparatie(comp, nr_calculatoare);
afisare(comp, nr_calculatoare);
computer temp;
bool sort;
cout << "\nSortarea dupa frecventa\n";
do
{
sort = true;
for (int i = 0; i < nr_calculatoare; i++)
{
for (int j = i + 1; j < nr_calculatoare; j++)
{
if (comp[i].frecventa < comp[j].frecventa)
{
sort = false;
temp = comp[i];
comp[i] = comp[j];
comp[j] = temp;
}
}
}
} while (sort);
afisare(comp, nr_calculatoare);
cout << endl;
cout << "\nSortarea dupa model procesor\n";
do
{
sort = true;
for (int i = 0; i < nr_calculatoare; i++)
{
for (int j = i + 1; j < nr_calculatoare; j++)
{
if (strcmp(comp[i].procesor, comp[j].procesor) > 0)
{
sort = false;
temp = comp[i];
comp[i] = comp[j];
comp[j] = temp;
}
}
}
} while (sort);
afisare(comp, nr_calculatoare);
}
Tip abstract de date - tip de date definit de catre utilizator utilizind tipurile deja existente cu
un anumit scop .
Structura - este o multime de date grupate conform unei ierarhii .
Prin ce se deosebeste structura de alte tipuri de date? - structura poate fi comparata cu un
tablou , insa tabloul contine date de acelasi tip pe cind structura de tipuri diferite.
Cum se defineste o variabila de tip structura? – in c typedef struct<nume>{ . . . } ,
in c++ struct<nume> { . . . }
Cind se utilizeaza punctul cind sageata? - De obicei se utilizeaza punctul , sageata se foloseste
doar atunci cind se face alocarea dinamica a structurei.
Care sunt deosebirile intre structurile din c si c++? – In c trebuie sa folosim typedef p/u a
crea o variabila de tip structura sau sa scrim <struct> <numele structurei> <numele variabilei>
pe cind in c++ doar scrim <numele structurei> <numele variabilei>
O structura poate sa contina o alta structura ? – Da, lucreaza exact ca compozitia in poo.
O structura poate sa contin pointeri spre ea insasi? – Da aceste tipuri de structuri se numesc
“self referential structures”.
Poate oare sa fie creata dinamic o variabila de tip structura? – Da, struct carte{},*book;
book = new book;
Explicati cum are loc apelul prin referinta – Pentru modificarea variabilei de tip structura ea
se transmite prin referinta: void setare(structura *variabila_structurei,… parametri …); , iar cind
are loc apelull functiei se transmite adresa variabilei si parametri.

Concluzie:
În urma efectuării laboratorului am realizat un program care păstrează informația într-o
structură computer. Această structură are 3 variabile, 2 de tip char care le-am alocat dinamic și
una de tip float. Am efectuat introducerea datelor în structură, modificarea elementelor,
compararea lor și sortarea.

S-ar putea să vă placă și