MINISTERUL EDUCAȚIEI ȘI CERCETĂRII
AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor
Raport
pentru lucrarea de laborator Nr.1
(V.10)
la disciplina “Programarea Orientată pe Obiecte”
Guțenco Vlad
Grupa IA-211
A verificat: Kulev Mihail
dr., conf. univ.
Chișinău – 2022
Tema: Structura – mecanism de abstractizare
Scopul lucrarii:
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.
Sarcina:
a):Codul Programului:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
struct prod_software{
char *denumire;
char *firma;
int an_editare;
float versiune;
};
void setValues(prod_software *str, char *denumire, char *firma, int an_editare, float
versiune){
str->denumire = new char[strlen(denumire) +1];
str->firma = new char[strlen(firma) +1];
strcpy(str->firma,firma);
strcpy(str->denumire,denumire);
str->an_editare = an_editare;
str->versiune = versiune;
}
void sortByName(prod_software *prod_software1, prod_software *prod_software2){
if(prod_software1->firma[0] > prod_software2->firma[0]){
prod_software *temp = prod_software1;
prod_software1 = prod_software2;
prod_software2 = temp;
}
}
bool compare_products(prod_software prod_software1, prod_software prod_software2){
if(prod_software1.an_editare < prod_software2.an_editare){
return 1;
}
else if (prod_software1.an_editare == prod_software2.an_editare)
{
if(prod_software1.denumire < prod_software2.denumire) return 1;
else return 0;
}
else return 0;
}
void free_memory(prod_software* sptr){
if (sptr->firma) delete[] sptr->firma;
sptr->firma = NULL;
sptr->denumire = NULL;
}
int main(int argc, char *argv[]){
prod_software prod_software1, prod_software2;
setValues(&prod_software1, (char*)"Office",(char*) "Microsoft",2022, 10.1 );
setValues(&prod_software2, (char*)"Photoshop", (char*)"Adobe",2021, 5.5 );
prod_software prod_software[2];
prod_software[0] = prod_software1;
prod_software[1] = prod_software2;
cout << "Produse Soft:\n";
cout << "produs soft 1 : "<<"|An Editre: " << prod_software[0].an_editare << " |
Firma : " << prod_software[0].firma << " |Denumirea : " <<prod_software[0].denumire <<"
|Versiune : " <<prod_software[0].versiune << "\n";
cout << "produs soft 2 : "<<"|An Editre: " << prod_software[1].an_editare << " |
Firma : " << prod_software[1].firma << " |Denumirea : " <<prod_software[1].denumire <<"
|Versiune : " <<prod_software[1].versiune << "\n";;
sort(prod_software, prod_software + 2, compare_products);
cout << "Produse Soft:\n";
cout << "produs soft 1 : "<<"|An Editre : " << prod_software[0].an_editare << " |
Firma : " << prod_software[0].firma << " |Denumirea : " <<prod_software[0].denumire <<"
|Versiune : " <<prod_software[0].versiune << "\n";
cout << "produs soft 2 : "<<"|An Editre : " << prod_software[1].an_editare << " |
Firma : " << prod_software[1].firma << " |Denumirea : " <<prod_software[1].denumire <<"
|Versiune : " <<prod_software[1].versiune << "\n";;
free_memory(&prod_software1);
free_memory(&prod_software2);
}
Raspunsul:
Codul programului b):
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct vector{
long* item;
double element;
};
void setare_valori(vector *sptr, long *item, double element){
sptr->item = item;
sptr->element = element;
}
void display_element(vector *sptr){
for(int i = 0 ; i < sptr->element ; i ++){
cout << sptr->item[i] << endl;
}
}
void remove_vector(vector *sptr){
delete sptr;
}
void changevectorSize(vector *sptr, double element){
cin >> sptr->element;
}
void access_Elements(vector *sptr){
int e;
cout << "Introduceti indexul elementului care doriti sal afisati:" << endl;
cin >> e;
for(int i = 0; i < sptr->element ; i++){
if(e == i){
cout << "Elementul cu indexul [" << i << "] = " << sptr->item[i] << endl;
}
}
}
void sum_elem_pare(vector *sptr){
int s = 0;
for(int i = 0 ; i < sptr->element ; i++){
if(sptr->item[i] % 2 == 0)
s += sptr->item[i];
}
cout<<"Suma elementelor pare este :: " <<s;
}
void adunare_vect_nr(vector *sptr){
int N;
cout<< "\nIntrodu un numar : ";
cin>>N;
for(int i = 0 ; i < sptr->element ; i++){
N += sptr->item[i];
}
cout<<"adunarea unui vector cu un numar. :: " <<N;
}
int main()
{
vector a;
int element;
cout << "Marimea Vectorului :: " << endl;
cin >> element;
long item[element];
cout << "Introduceti elementele vectorului a:" << endl;
for(int i = 0; i < element ; i++){
cin >> item[i];
}
setare_valori(&a,item,element);
cout << "Elementele vectorului introduse " << endl;
display_element(&a);
access_Elements(&a);
sum_elem_pare(&a);
adunare_vect_nr(&a);
remove_vector(&a);
}
Raspuns:
Concluzii:
În ruma elaborării laboratorului am făcut cunoștință cu limbajul de programare C++.
Am întâmpinat mai multe greșeli care au fost corectate pentru ca programul să ruleze cu succes.
Bibliografie:
1. Sarcina data: [Link]
[Link]
2. Programul pe else: [Link]
0/poo1_1.[Link]