You are on page 1of 10

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

FCIM

Raport
Lucrarea de laborator Nr.1
Programarea orientată pe obiecte

varianta 1

A efectuat: Bivol Tudor CR-211

A verificat Kulev Mihail

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

Sarcina

Varianta I
1. Să se creeze; utilizînd structura, tipul abstract de date pentru reprezentarea
numerelor complexe. Să se definească funcţiile de setare/citire a pă rţii reale şi
imaginare a unui numă r complex; de adunare, scă dere, înmulţire, împă rţire şi de
comparaţie( mai mic, mai mare, etc.) a două numere complexe. Să se definească
funcţia ce calculează şi returnează modulul unui numă r complex. Să se definească
toate funcţiile ca fiind globale.

#include <iostream>
#include <cmath>
using namespace std;
struct Complex
{
float Re;
float Im;
}V[3];
void readComplex();
void show_Complex();
void adunarea_Complex();
void scaderea_Complex();
void inmultirea_Complex();
void impartire_Complex();
void modulul_Complex();
void comparare_Complex();
float z_re, z_im;

int main()
{
int optiune;
while(1)
{

cout << "\n -------- MENIU -------- \n";


cout << " -> 1. Citirea numerelor complexe \n";
cout << " -> 2. Afisarea numerelor complexe \n";
cout << " -> 3. Operatia de adunare \n";
cout << " -> 4. Operatia de scadere \n";
cout << " -> 5. Operatia de inmultire \n";
cout << " -> 6. Operatia de impartire \n";
cout << " -> 7. Modulul unuia dintre cele 2 numere complexe \n";
cout << " -> 0. Introduceti meniul dorit: "; cin >> optiune;
switch(optiune)
{
case 1:
readComplex();

break;
case 2:
show_Complex();

break;
case 3:
adunarea_Complex();

break;
case 4:
scaderea_Complex();

break;
case 5:
inmultirea_Complex();

break;
case 6:
impartire_Complex();

break;
case 7:
modulul_Complex();

break;
case 8:
comparare_Complex();

break;
case 0:
cout<<"\n\nAti iesit din program!!\n\n"; system("pause");
exit(1);
default:
cout<<"\nAti introdus un numar gresit!\n"; system("pause");
break;
}
}
return 0;
}
void readComplex()
{
int i;
for(i=0; i<2; i++)
{
cout<<"\n\nElementul "<<i+1<<""<<endl<<endl;
cout<<"Re: "; cin>>V[i].Re;
cout<<"Im :"; cin>>V[i].Im;
}
}
void show_Complex()
{
int i;
cout<<"\nElementele sunt: \n";
for(i=0; i<2; i++)
{
cout<<"\nZ"<<i+1<<" = "<<V[i].Re << " + "<<V[i].Im<<"*i";
}
}
void adunarea_Complex()
{
cout<<"\nAdunarea elementelor : Z1 + Z2 = (a1 + a2) + (b1 + b2)i.\n";
z_re = V[0].Re + V[1].Re; cout<<"\n(a1 + a2) = "<<z_re<<endl;
z_im = V[0].Im + V[1].Im; cout<<"\n(b1 + b2) = "<<z_im<<endl;
if(z_im < 0)
{
cout<<"\nZ = "<<z_re<<" + ("<<z_im<<")*i"<<endl;
}
else
{
cout<<"\nZ = "<<z_re<<" + "<<z_im<<"*i"<<endl;
}
}
void scaderea_Complex()
{
cout<<"\nScaderea elementelor : z1 - z2 = (a1 - a2) + (b1 - b2)i"<<endl;
z_re = V[0].Re - V[1].Re; cout<<"\n(a1 - a2) = "<<z_re<<endl;
z_im = V[0].Im - V[1].Im; cout<<"\n(b1 - b2) = "<<z_im<<endl;
if(z_im < 0)
{
cout<<"\nZ = "<<z_re<<" + ("<<z_im<<")*i"<<endl;
}
else
{
cout<<"\nZ = "<<z_re<<" + "<<z_im<<"*i"<<endl;
}
}
void inmultirea_Complex()
{
cout<<"\nInmultirea elementelor : z1 * z2 = (a1*a2 - b1*b2) + (a1*b2 + b1*a2)i"<<endl;
z_re = V[0].Re*V[1].Re - V[0].Im*V[1].Im; cout<<"\n(a1*a2 - b1*b2) = "<<z_re<<endl;
z_im = V[0].Re*V[1].Im + V[0].Im*V[1].Re; cout<<"\n(a1*b2 + b1*a2) = "<<z_im<<endl;
if(z_im < 0)
{
cout<<"\nZ = "<<z_re<<" + ("<<z_im<<")*i"<<endl;
}
else
{
cout<<"\nZ = "<<z_re<<" + "<<z_im<<"*i"<<endl;
}
}
void impartire_Complex()
{
cout<<"\nImpartirea elementelor : z1/z2 = ((a1*a2 + b1*b2)/(a2*a2 + b2*b2)) + ((a2*b1 -
a1b2)/(a2*a2 + b2*b2))i"<<endl;
z_re = (V[0].Re*V[1].Re + V[0].Im*V[1].Im)/(V[1].Re*V[1].Re + V[1].Im*V[1].Im); cout<<"\
n(a1*a2 + b1*b2)/(a2*a2 + b2*b2) = "<<z_re<<endl;
z_im = (V[1].Re*V[0].Im - V[0].Re*V[1].Im)/(V[1].Re*V[1].Re + V[1].Im*V[1].Im); cout<<"\
n(a2*b1 - a1b2)/(a2*a2 + b2*b2) = "<<z_im<<endl;
if(z_im < 0)
{
cout<<"\nZ = "<<z_re<<" + ("<<z_im<<")*i"<<endl;
}
else
{
cout<<"\nZ = "<<z_re<<" + "<<z_im<<"*i"<<endl;
}
}
void modulul_Complex()
{
int t;
float z;
cout<<"\nModulul elementelor : |z| = sqrt(a*a + b*b);"<<endl;
cout<<"\nIntroduceti z1(1) sau z2(2) pentru a face modlulul acestuia:"; cin>>t;
if(t == 1)
{
z = sqrt(V[0].Re*V[0].Re + V[0].Im*V[0].Im); cout<<"\n|z1| = "<<z<<endl;
}
if(t == 2)
{
z = sqrt(V[1].Re*V[1].Re + V[1].Im*V[1].Im); cout<<"\n|z2| = "<<z<<endl;
}
}
void comparare_Complex()
{
if(z_im == 0)
{
if(V[0].Re < V[1].Re)
{
cout<<"\nZ1 este mai mic decat Z2\n";
}
else
{
cout<<"\nZ1 este mai mare decat Z2\n";
}
}
else
{
cout<<"\nPartea imaginara exista sau in Z1 sau in Z2!!!"<<endl<<"Compararea se poate efectua
doar daca ambele parti imaginare sunt = 0!"<<endl;
}
}

Rezultatul programului :
2. Să se
creeze
tipul
abstract
de date

(structura) – vector, care se compune dintr-un pointer spre int ş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 modulului unui vector. În funcţia main să
se realizeze adunarea a doi vectori.

#include <iostream>
using namespace std;
struct Vector
{
int *numar;
int n;
public:
void init(int);
};
void Vector::init(int size)
{
n = size;
numar = new int[n];
}
void setare(Vector *s, int *Numar, int N)
{
s->numar = Numar;
s->n = N;
}
void afisare(Vector S)
{
cout << endl;
cout << "Elementele" << S.numar << endl;
}
int main()
{
int q, n;
int sum = 0;
int sum1 = 0;
int *numar;
numar = new int[30];
int *numar1;
numar1 = new int[30];
Vector *S = NULL;
while (1)
{
system("cls");
cout << "1.Setarea datelor" << endl;
cout << "2.Afisarea datelor" << endl;
cout << "3.Modificarea datelor" << endl;
cout << "4.Suma elementelor pare" << endl;
cout << "5.Elementul maximal" << endl;
cout << "6.Eliminarea vectorului" << endl;
cout << "7.Exit" << endl;
cout << endl;
cout << "Alegeti optiunea : ";
cin >> q;
system("cls");
switch (q)
{
case 1:
{
if (!numar)
return q;
cout << "Introduceti lungimea vectorului: ";
cin >> n;
S = new Vector[n];
for (int i = 0; i < n; i++)
{
cout << "Elementul " << i + 1 << ": ";
cin >> numar[i];
}
system("pause");
}
break;
case 2:
{
cout << "Afisarea rezultatelor" << endl;
for (int i = 0; i < n; i++)
{
cout << "Elementul " << i + 1 << ": " << numar[i] << endl;
}
system("pause");
}
break;
case 3:
{
if (!numar)
return q;
cout << "Introduceti lungimea vectorului nou :";
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "Elementul " << i + 1 << ": ";
cin >> numar[i];
}
system("pause");
}
break;
case 4:
{
for (int i = 0; i < n; i++)
{
if (numar[i] % 2 == 0)
{
sum += numar[i];
}
}
cout << "Suma elementelor pare = " << sum << endl;
cout << endl;
system("pause");
}
break;
case 5:
{
int maximum;
int location = 1;
//int i = 0;
maximum = numar[0];// n =size; numar[i]=array[c]
for (int i = 1; i < n; i++)
{
if (numar[i] > maximum)
{
maximum = numar[i];
location = i + 1;
}
}
cout << "Elementul maximal\nPozitia: " << location << "\nValoarea: " <<
maximum<<endl;
system("pause");
}
break;
case 6:
{
for (int i = 0; i < n; i++) {
numar[i] = NULL;
}
cout << "Vectorul a fost sters\n";
system("pause");
n = 0;
}
break;
case 7:
{
return 0;
}
break;
}
}
return 0;
}

Concluzii :

Executand acest program, mi-am dezvoltat abilitatea de a lucra in C++, astfel am insusit
modalitatile de implementare corecta a structurilor in C++. De asemenea am utilizat
ratiunea pentru implementarea numerelor complexe in program si mi-am readus aminte
modul de utilizare a operatiilor cu numerele complexe.

You might also like