Documente Academic
Documente Profesional
Documente Cultură
Laborar 2 Programare
Laborar 2 Programare
RAPORT
Lucrarea de laborator Nr.2
Varianta:8
Tema:” Constructorul – funcţie de iniţializare a obiectelor clasei”
2019
Scopul lucrării:
Studierea regulilor de determinare a moştenirii multiple;
Studierea avantajelor şi neajunsurilor moştenirii multiple;
Probleme legate de utilizarea moştenirii multiple;
Studierea rezolvării problemelor;
Sarcina Lucrarii:
а) Pentru orice sir de caractere, introdus de la tastatura, printr-un meniu adecvat, sa se realizeze,
utilizandu-se o clasa clasaSir, urmatoarele operatii: conversia sirului la caractere mici, conversia
la caractere mari si adaugarea unui subsir la sirul dat.
b) Să se creeze clasa Matrix – matrice. Clasa conţine pointer spre double, numărul de rînduri şi de
coloane şi o variabilă – codul erorii. Să se definească constructorul fără parametri (constructorul
implicit), constructorul cu un parametru – matrice pătrată şi constructorul cu doi parametri –
matrice dreptunghiulară ş. a. Să se definească funcţiile membru de acces: returnarea şi setarea
valorii elementului (i,j). Să se definească funcţiile de adunare şi scădere a două matrice; înmulţirea
unei matrice cu alta; înmulţirea unei matrice cu un număr. Să se testeze funcţionarea clasei. În caz
de insuficienţă de memorie, necorespondenţă a dimensiunilor matricelor, depăşire a limitei
memoriei utilizate să se stabilească codul erorii.
a) Codul Programului:
#include<stdio.h>
#include<conio.h>
#include<string.h>
class clasasir
public:
// declararea functiei de copiere sir
fgets(sir,80,fileptr);
sizesir=strlen(sir)-1;
if(sir[sizesir]=='\n') sir[sizesir]=0;
clasasir tempsir;
switch (optiune)
break;
break;
break;
int main()
{
char alegere='1',r='d';
while (r=='d')
clsir.citeste(stdin);
do
printf("\n ==============================");
printf("\n ==============================");
printf("\n alegeti o optiune:");
alegere=getchar();getchar();
while((alegere!='1')&&(alegere!='2')&&
(alegere!='3')&&(alegere!='t'));
while(alegere!='t')
conversie(clsir,alegere);
clsir.scrie(stdout);
do
printf("\n ==============================");
printf("\n ==============================");
alegere=getchar();getchar();
while((alegere!='1')&&(alegere!='2')&&
(alegere!='3')&&(alegere!='t'));
printf("\n continuati?(d/n):");
r=getche();
Rezultatul Programului:
b) Codul Programului:
#include <iostream>
class Matrix
{
public:
int Tab[50][50];
int line;
int column;
public:
Matrix();
Matrix(double);
Matrix(double, double);
Matrix(const Matrix&);
~Matrix();
void f_set_matr();
void f_show();
void f_addition(const Matrix &matrix);
void f_subtract(const Matrix &matrix);
void f_multipl_matrix(const Matrix &matrix);
void f_multipl_num(double value);
};
double g_size;
Matrix::Matrix() : line(0), column(0) {}
Matrix::~Matrix()
{
double i;
void Matrix::f_set_matr()
{
int i, j;
for (i = 0; i < line; i++)
for (j = 0; j < column; j++)
{
cout << " Matrix["<<i<<"]["<<j<<"]=";
cin >>Tab[i][j];
}
}
void Matrix::f_show()
{
int i, j;
if (column == matrix.line)
{
for (i = 0; i < line; i++)
{
for (j = 0; j < column; j ++)
{
for (k = 0; k < line; k++)
{
temp += Tab[i][k] * matrix.Tab[k][j];
Tab2[i][j] = temp;
}
temp = 0;
}
temp = 0;
}
for (i = 0; i < line; i++)
for (j = 0; j < column; j ++)
Tab[i][j] = Tab2[i][j];
}
else
cout << "Matricea nu este compatibila pentru inmultire !!" << endl;
}
void f_menu()
{
Matrix m1, m2;
double ml_nr;
system("pause");
exit(0);
}
int main()
{f_menu();
return (0);}
Rezultatul Programului:
Concluzie:
In rezultatul elaborarii lucrarii date s-a pus baza aplicarii in practica a cunostintelor
teoretice referitoare la mostenirea multipla.
Astfel se poate judeca despre posibilitatile largi acordate de limbajul C++ referitor la
manipularea claselor.