Sunteți pe pagina 1din 2

/* Parfenov Sergiu-Andrei grupa 2111,lab 7,problema 1,Modificaţi exemplul 3 astfel

încât să permită obtinerea


unui nou punct, avand coordonatele obtinute prin adunarea coordonatelor a două
astfel de puncte.
Numele noului punct va fi rezultat prin concatenarea numelor celor două puncte.
Adaugati si testati o
metoda care calculeaza distanta de la un punct la origine.
Modificați clasa astfel încât sa eliminați metoda Afis() folosind in schimb metode
getter adecvate.
Eliminați de asemenea atributul lungime_sir modificând adecvat metodele clasei.
Testati utilizand si functii specifice sirurilor de caractere din VC++1y/2z
(strcy_s( ) si strcat_s( )).*/

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

class CPunctText {
private:
int x, y, lungSir;
char* sNume;
public:
CPunctText();
CPunctText(int ix, int iy,const char *sText = "Punct");
CPunctText(CPunctText& pct);
~CPunctText();
void afisare() {
cout << "\nObiectul are x= " << x;
cout << "\nObiectul are y= " << y;
cout << "\nObiectul are sirul: " << sNume << endl;
}
void suma(CPunctText, CPunctText);
void distanta();
};

CPunctText::CPunctText() {
cout << "\nConstructor standard\n";
lungSir = 20;
sNume = new char[lungSir];
}

CPunctText::CPunctText(int ix, int iy,const char *sText) {


cout << "\nConstructor de initializare\n";
lungSir = strlen(sText) + 1;
sNume = new char[lungSir];
x = ix;
y = iy;
strcpy(sNume, sText);
}

CPunctText::CPunctText(CPunctText& pct) {
cout << "\nConstructor de copiere\n";
sNume = new char[pct.lungSir];
x = pct.x;
y = pct.y;
lungSir = pct.lungSir;
strcpy(sNume, pct.sNume);
}

CPunctText::~CPunctText() {
cout << "\nDestructor\n";
delete[]sNume;
}

void CPunctText::suma(CPunctText pct1, CPunctText pct2) { // copiaza obiectele pct1


si pct2 in obiectul pct
x = pct1.x + pct2.x;
y = pct1.y + pct2.y;
lungSir = pct1.lungSir + pct2.lungSir;
// delete sNume;
sNume = new char[lungSir];
strcpy(sNume, pct1.sNume);
strcat(sNume, pct2.sNume);
}

void CPunctText::distanta() {
float d;
d = sqrt((float)x * (float)x + (float)y * (float)y);
cout << "\nDistanta de la pct la origine este: " << d;
}

void main() {
int x1, x2, y1, y2;
char nume1[20], nume2[20];
cout << "\tx1: ";
cin >> x1;
cout << "\ty1: ";
cin >> y1;
cout << "Nume 1: ";
cin >> nume1;
cout << "\tx2: ";
cin >> x2;
cout << "\ty2: ";
cin >> y2;
cout << "Nume pct 2: ";
cin >> nume2;
CPunctText pct1(x1, y1, nume1), pct2(x2, y2, nume2);
cout << "Punct 1: ";
pct1.afisare();
cout << "Punct 2: ";
pct2.afisare();
CPunctText s;
s.suma(pct1, pct2);
cout << "\nPunctul format din suma celor doua puncte: \n";
s.afisare();
s.distanta();
}

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