Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Programare orientata pe obiecte - Tema de casa

Programare orientata pe obiecte

Tema de casa

(*) Sa se realizeze o aplicatie care sa gestioneze o multine de vectori liberi din plan. Fiecare vector este specificat prin coordonatele punctului de origine si al varfului. Aplicatia trebuie sa permita urmatoarele operatii:

Adaugarea unui vector in multimea de vectori

Stergerea unui vector din multimea de vectori

Translatia unui vector in plan

Operatiile de adunare si scadere a doi vectori

Testarea daca multimea de vectori poate reprezenta laturile unui poligon; in caz negativ, se va adauga un vector suplimentar astfel incat sa se formeze poligonul



Generarea poligonului format de vectorii liberi si testarea daca acesta este convex.

Afisarea poligonului format de vectorii liberi

Determinarea ariei (in cazul unui poligon convex) si a perimetrului poligonului format de vectorii liberi

Daca multimea de vectori nu reprezenta laturile unui poligon convex; se va determina infasuratoarea convexa a multimii de puncte formata de varfurile vectorilor, iar aceasta va genera o noua multime de vectori liberi, care formeaza poligonul convex

Se vor utiliza cel putin clasele VectorLiber, Poligon si ListaPoligoane.

Am folosit urmatoarele clase:

  • Coord - retinecoordonatele unui vector;
  • punct - retine coordonatele unui punct;
  • VectorLiber - derivata public din Coord. Contine functii membre pentru adunare si scadere(prin supraincarcare operatolor+ si -) si pentru  translatia unui vector;
  • MultVector - gestioneaza o multime de vectori (prin functiile de adaugare si de stergere a vectorilor),  in plus o functie membra determina daca multimea de vectori formeaza un poligon;
  • Poligon - contine informatii referitoare la un singur polinom si are functii membru pentru determinarea perimtrului  si ariei unui poligon;
  • ListaPoligoane - pentru crearea si gestionarea ounei liste de polinoame  .




Fisierul header:

#include <iostream>

#include<cmath>

using namespace std;

typedef int stiva[20];

class punct

void setX(int zx)

void setY(int zy)

int getX()

int getY()

void afisPunct()

class Coord

int getOx()

void setOy(int p=0)

int getOy()

void setVx(int p=0)

int getVx()

void setVy(int p=0)

int getVy()

void citireCoord();

void afisareCoord();

class VectorLiber : public Coord

void setCoord(int x1=0, int y1=0, int x2=0, int y2=0)

VectorLiber getCoord()

void setTranslatie(int i, int j);

VectorLiber& operator+(VectorLiber&);

VectorLiber& operator-(VectorLiber&);

///CLASA MultVector

///Pentru implementarea multimii de vectori

class MultVector

int getOk()

void tipar();

void init();

int succesor();

int valid();

int solutie();

void back();



~MultVector()

///clasa pentru implementarea unui tip de date abstract care sa retina inf despre poligon

class Poligon

else cout<<'Multimea de vectori nu poate crea un poligon!';

}

int tellIfPolygon()

void afisPoligon();

float detArie();

float detPerimetru();

~Poligon()

//lista de poligoanes

class ListaPoligoane

};

void setNrPoligoane(int n);

int getNrPoligoane();

void afisListaPoligoane();

void AddPoligon(Poligon p)

~ListaPoligoane();

Fisier sursa pentru implementarea modulului

#include'header. h'

Coord::Coord()

void Coord::citireCoord()

void Coord::afisareCoord()

VectorLiber& VectorLiber::operator +(VectorLiber& operand)

VectorLiber& VectorLiber::operator -(VectorLiber& operand)

void VectorLiber::setTranslatie(int i, int j)

MultVector::MultVector(int n, int kk, int k1)

void MultVector::citireVectori()

void MultVector::AddVect(VectorLiber p)

void MultVector::DelVect(VectorLiber p)



} if(!ok) cout<<'Vectorul pe care doriti sa-l stergeti nu exista!';

delete[] vector ; //eliberarea memoriei pt. vector

nrVectori=k;

vector=v;

void MultVector::tipar()

void MultVector::init()

int MultVector::succesor()

else return 0;

}

int MultVector::valid()

int MultVector::solutie()

void MultVector::back()           while( (as=succesor()) && !valid());

if (as)

if (solutie()) setOk(1);

else

else k--;

}

void MultVector::afisareVectori()

cout<<endl;

void Poligon::afisPoligon()

cout<<endl;

}

float Poligon::detArie()

i++;

v[i]. setX(varfPol[0]. getX());v[i]. setY(varfPol[0]. getY());

int s=0;

for (i=1;i<=nrVarfuri;i++) s+=v[i]. getX()*v[i+1]. getY()-v[i]. getY()*v[i+1]. getX();

return s/2;

}

float Poligon::detPerimetru()

cout<<endl;

for (i=1;i<nrVarfuri;i++)

p+=sqrt( pow(varfPol[i]. getX()-varfPol[i-1]. getX() , 2)+pow( varfPol[i]. getY()-varfPol[i-1]. getY() , 2));

p+=sqrt( pow(varfPol[nrVarfuri-1]. getX()-varfPol[0]. getX() , 2) + pow( varfPol[nrVarfuri-1]. getY()-varfPol[0]. getY() , 2) );

return p;

}