Sunteți pe pagina 1din 7

Ministerul Educaţiei Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică şi Microelectronică.
Departamentul Informatică și Ingineria Sistemelor

Raport la

Lucrare de laborator Nr.1


la Programarea orientată pe obiect

A efectuat: st. gr.IA-182 Atamanenco Ion

A verificat: asist.univ. V.Mititelu

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

Noţiuni de bază
Structura – este o mulţime de date grupate, conform unei ierarhii, de obicei de tipuri diferite. Structura
poate fi comparată cu tabloul, însă tabloul conţine date de un acelaşi tip, iar elementele tabloului se
accesează cu ajutorul indicilor, pe cînd accesarea componentelor structurii are o formă specifică. Structura
reprezintă un tip abstract de date, un tip definit de utilizator prin utilizarea tipurilor deja existente. La
stabilirea şi implementarea conceptelor necesare rezolvării unei probleme se realizează un proces de
abstractizare care priveşte reprezentarea datelor şi prelucrarea acestora. Aceasta justifică termenul de
programare prin abstractizarea datelor.

Rezultate obținute:
Sarcina:

Codul:
a)
#include <iostream>
#include <cmath>

using namespace std;

struct ComplexNumber {
double real;
double img;
};

ComplexNumber addition(ComplexNumber z1, ComplexNumber z2) {


ComplexNumber temp;
temp.real = z1.real + z2.real;
temp.img = z1.img + z2.img;
return temp;
}
double module(ComplexNumber z) {
return sqrt(z.real * z.real + z.img * z.img);
}

void show(ComplexNumber z) {
cout << z.real << (z.img > 0 ? "+" : "") << z.img << "i" << endl;
}

ComplexNumber subtraction(ComplexNumber z1, ComplexNumber z2) {


ComplexNumber temp;
temp.real = z1.real - z2.real;
temp.img = z1.img - z2.img;
return temp;
}

ComplexNumber multiplication(ComplexNumber z1, ComplexNumber z2) {


ComplexNumber temp;
temp.real = z1.real;
temp.img = (z1.img * z2.real) + z2.img;
return temp;
}

ComplexNumber division(ComplexNumber z1, ComplexNumber z2) {


ComplexNumber temp;
float modpatrat = module(z2);
modpatrat = modpatrat * modpatrat;
temp.real = (z1.real * z2.real + z1.img * z2.img) / modpatrat;
temp.img = (z1.img * z2.real - z1.real * z2.img) / modpatrat;

return temp;
}

int main() {
ComplexNumber cn1, cn2, cn3, cn4, cn5, cn6;

cout << "Enter the real and imaginary value of the first complex number:
\n";
cin >> cn1.real >> cn1.img;
cin.ignore();

cout << "\nEnter the real and imaginary value of the second complex number:
\n";
cin >> cn2.real >> cn2.img;
cin.ignore();
cn3 = addition(cn1, cn2);
cout << "\nThe addition of the two complex numbers: \n";
show(cn3);
cn4 = subtraction(cn1, cn2);
cout << "\nThe subtraction of the two complex numbers: \n";
show(cn4);
cn5 = multiplication(cn1, cn2);
cout << "\nThe multiplication of the two complex numbers: \n";
show(cn5);
cn6 = division(cn1, cn2);
cout << "\nThe division of the two complex numbers: \n";
show(cn6);
double mod = module(cn2);
cout << "Module of the first complex number= " << mod << endl;
double md = module(cn1);
cout << "Module of the second complex number= " << md << endl;
if (mod > md)
printf("First complex number is larger");
else
printf("Second complex number is larger");
cin.get();
return 0;
}
Rezultat:
b)
#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;

struct vector{
int* n;
int nrDeElem;
};
void setElementNumber(vector &v,int numarulDeElemente){
v.nrDeElem = numarulDeElemente;
v.n = new int[v.nrDeElem];
}
void setValues(vector &v){
int var;
cout<<"Vectorul are "<<v.nrDeElem<<" elemente"<<endl;
for (int i = 0; i < v.nrDeElem; ++i) {
cout<<"Introduceti elementul "<<i<<endl;
cin>>var;
v.n[i]=var;
}
}

void show(vector &v){


cout<<"Vectorul:"<<endl;
for (int i = 0; i < v.nrDeElem; ++i) {
cout<<v.n[i]<<" ";
}
cout<<endl;
}

void eliminareVect(vector &v){


if(v.nrDeElem) v.nrDeElem = NULL;
if(v.n) v.n = nullptr;
cout<<"Vectorul a fost eliminat"<<endl;
}
void accesareElement(vector &v){
int poz;
cout<<"Indicati pozitia elementului care sa se afiseze"<<endl;
cin>>poz;
cout<<"Elementul de pe pozitia"<<poz<<"este:"<<v.n[poz];
}
void modululVectorului(vector &v){
int i=0;
float modul = 0;
modul =
sqrt(pow(v.n[i],2)+pow(v.n[i+1],2)+pow(v.n[i+2],2)+pow(v.n[i+3],2)+pow(v.n[i+4]
,2));
cout<<"Modulul vectorului este :"<<modul<<endl;
}

int main() {
vector arr;
vector arr1;
vector arr2;
setElementNumber(arr,5);
setValues(arr);
setElementNumber(arr1,5);
setValues(arr1);
setElementNumber(arr2,5);
for (int i = 0; i < arr.nrDeElem; ++i) {
if (arr.nrDeElem != arr1.nrDeElem){
cout<<"Vectorii nu au dimensiune egala"<<endl;
break;
} else {
arr2.n[i] = arr.n[i] + arr1.n[i];
}
}
cout<<"2 Vectori au fost adunati : "<<endl;
show(arr2);
//modululVectorului(arr);

return 0;

Rezultat:
Concluzie:

În procesul de rezolvare a lucrării de laborator am folosit compilatorul CLion care este


bazat pe limbajul C și C++. Pentru rezovlarea sarcinii primite am fost nevoit să lucrez cu numere
complexe și vectori unde mi-au fost de folos cunoștințele primite de la matematică. Spre sfârșit am
primit două programe, bazate pe operații cu numere complexe și vectori, care lucrează fară erori.

La finalul lucrării de laborator am primit cunoștințe mai aprofundate despre limbajul de programare
C++ care este un limbaj multi-paradigmă, cu verificarea statică a tipului variabilelor ce suportă
programare procedurală, abstractizare a datelor și programare orientată pe obiecte.

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