Raport
Lucrare de laborator nr.4
Programare in C++
VARIANTA 7
A verificat:
Scrob Sergiu
Chisinau 2016
LUCRARE DE LABORATOR NR. 4
Varianta 7
а) De creat o ierarhie a claselor clădire – administrarea clădirii – clădire de locuit. Determinaţi
fluxul de ieşire şi fluxul de intrare, constructorul de copiere, operatorul de atribuire prin funcţia
corespunzătoare a clasei de bază.
b) De creat clasa student, care are un nume, specialitate, anul de învăţământ şi balul mediu.
Determinaţi funcţia de definire, schimbare a datelor şi comparare. Pentru sarcina câmpurilor
textuale se foloseşte operatorul new. Determinaţi constructorul, destructorul şi alte funcţii
necesare. Creaţi clasa grupa, care conţine studenţi (o cantitate nelimitată). Definiţi metodele de
adăugare şi eliminare a studenţilor, determinarea balului mediu pe grupă, constructorii,
destructorii şi alte funcţii necesare.
Codul programului (a) :
#include <iostream>
#include <string>
class Cladire
{
protected:
char adress[100];
int nr_etaj;
int nr_loc;
public:
Cladire () : nr_etaj(0), nr_loc(0)
{}
2
{
cout << "Introduceti adresa >> ";
in >> c.adress;
cout << "Introduceti numarul de etaje >> ";
in >> c.nr_etaj;
cout << "Introduceti numarul de locuitori >> ";
in >> c. nr_loc;
return (in);
}
};
public:
Adm_cladire() : nb_office(0)
{}
public:
Loc_cladire() : nb_cam(0)
{}
3
Loc_cladire(const Loc_cladire &c)
{
strcpy(this -> name_loc, c.name_loc);
this -> nb_cam;
}
int main()
{
Cladire c1;
Adm_cladire c2;
Loc_cladire c3;
system ("pause");
return (0);
}
4
Codul programului (b) :
#include <iostream>
#include <string>
class Student
{
public:
string name;
string spec;
float mark;
void ft_define()
{
cout << "\nIntroduceti datele studentului " << endl;
cout << "Numele >> " << endl;
cin >> name;
cout << "Specialitatea >> " << endl;
cin >> spec;
cout << "Balul mediu >> " << endl;
cin >> mark;
}
void ft_del()
{
name = '0';
spec = '0';
mark = 0;
}
Group(int count)
{
group = new Student[count];
this->count = count;
index = 0;
}
~Group()
{
5
delete [] group;
count = 0;
}
void ft_add()
{
group[index].ft_define();
index++;
}
void ft_delete()
{
int i;
cout << "Introduce indexul studentului pentru stergere" << endl;
cin >> i;
group[i].ft_del();
}
void ft_modify()
{
int i;
cout << "Introduceti indexul studentului pentru modificare dateleor" <<
endl;
cin >> i;
group[i].ft_define();
}
float ft_medmark()
{
float sum = 0;
float med = 0;
int i = -1;
while (++i < count)
sum += group[i].mark;
return (med = sum/count);
}
6
sum += g.group[i].mark;
med = sum/g.index;
out << med << endl;
return out;
}
};
int main()
{
char choice;
int n;
while (1)
{
system("cls");
cout << "[1]. Adaugati cite un student." << endl;
cout << "[2]. Eliminati cite un student." << endl;
cout << "[3]. Modificati datele unui student." << endl;
cout << "[4]. Afisarea grupei." << endl;
cout << "[0]. Exit" << endl;
cin >> choice;
7
Demonstratea programului (a):
Concluzie:
In rezultatul elaborarii lucrarii date s-a pus baza aplicarii in practica a cunostintelor teoretice
referitoare la mostenire.
Astfel se poate judeca despre posibilitatile largi acordate de limbajul C++ referitor la
manipularea claselor.