Sunteți pe pagina 1din 2

Sa se scrie o aplicatie C++ in care se defineste o clasa Patrat, ce are ca date private latura l de tip intr

a patratului. Clasa mai contine un constructor explicit cu parametru implicit=0, metode set si get, o
metoda calcDiag() ptr calculul diagonalei care e returnata ca valoare double, o metoda calcPerim()
ptr calculul perimetrului returnand un intreg si un destructor care afiseaza un mesaj. Instantiati n<5
(citit de la tastatura) obiecte intr-un tablou. Definiti un pointer la primul obiect si o referinta la al
doilea. Apelati metodele clasei ptr aceste doua obiecte. Supraincarcati operatorul de insertie ptr a
afisa latura, diagonala si perimetrul ptr toate obiectele. Afisati pe randuri separate datele specifice
tuturor obiectelor. Scrieti aceleasi date intr-un fisier. Daca e cazul folositi si alte metode necesare.
Clasa va fi declarata intr-un fisier header separate si apoi definita intr-un fisier *.cpp

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

int n = 1;

class Patrat {
int l;
public:
Patrat(int l = 0) :l(l) {}
void setL(int l) { this->l = l; }
int getL() { return l; }
double calcDiag() {return l * sqrt(2);}

int calcPerim() { return 4 * l;}

~Patrat() {cout << "\nDestructor";}


};

ostream& operator<< (ostream&, Patrat*);

int main()
{
cout << "Cititi n(n<5): "; cin >> n;
Patrat* tab = new Patrat[n];
Patrat* pp = &tab[0];
Patrat& pr = tab[1];
pp->setL(2);
cout << pp->getL() << " " << pp->calcPerim() << " " << pp->calcDiag();
pr.setL(3);
cout << endl << pr.getL() << " " << pr.calcPerim() << " " << pr.calcDiag();
cout << tab;
char name[20];
cin.ignore();
cout << "Cititi numele fisierului: ";
cin.getline(name, 20);
ofstream file(name, ios::out, ios::trunc);
for (int i = 0; i < n; i++)
{
file << "\nLatura: " << tab[i].getL();
file << "\nDiagonala: " << tab[i].calcDiag();
file << "\nPerimetrul: " << tab[i].calcPerim();
file << endl;
}
file.close();
delete[]tab;
cin.ignore();
cin.get();
return 0;
}

ostream& operator<< (ostream& stream, Patrat* ob)


{
stream << "\nDetalii: ";
for (int i = 0; i < n; i++)
{
stream << "\nLatura: " << ob[i].getL();
stream << "\nDiagonala: " << ob[i].calcDiag();
stream << "\nPerimetrul: " << ob[i].calcPerim();
stream << endl;
}
return stream;
}

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