Witam. Mam do napisania obiektowo program liczący pola i obwody figur w układzie współrzędnych. Użytkownik podaje współrzędne wierzchołków, które mają być przekazane do danej klasy przez jej konstruktor i tu pojawia się problem. Mam klasę Figura, klasa np. Trojkat dziedziczy z klasy Figura. W Figura mam metody odpowiedzialne za zorientowanie się jakie figury użytkownik chce policzyć (trójkąt lub czworokąt) i metodę która pobiera od użytkownika współrzędne i zapisuje współrzędne wszystkich figur w dwóch tablicach: wierzcholkiX i wierzcholkiY. I teraz nie mam pojęcia jak sformułować konstruktor aby odpowiednie wartości tablic były przekazywane do klasy np. Trojkat przez konstruktor w tej klasie. Dziękuję za pomoc. Tu fragment kodu:
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
class Figura
{
private:
int trojkaty,kwadraty,czworo;
int * wierzcholkiX;
int * wierzcholkiY;
string figury;
public:
double pole();
double obwod();
void zbierz()
{
cout<<"Podaj ilosc i typ figur: t - trojkat, c - czworokat, k - kwadrat: "<<endl;
cin>>figury;
int dlugosc;
trojkaty=0;
kwadraty=0;
czworo=0;
dlugosc = figury.length();
for(int i=0; i<dlugosc; i++)
{
if(figury[i]=='t')
trojkaty++;
else
if(figury[i]=='c')
czworo++;
else
if(figury[i]=='k')
kwadraty++;
}
wierzcholkiX = new int[3*trojkaty+4*czworo+4*kwadraty];
wierzcholkiY = new int[3*trojkaty+4*czworo+4*kwadraty];
int miejsceX=0; //gdzie jest w ^ tablicy
int miejsceY=0;
if(trojkaty!=0)
//cout<<3*trojkaty+4*czworo+4*kwadraty;
for(int i=0; i<trojkaty; i++)
{
for(int j=0; j<3; j++)
{
cout<<"Wprowadz wspolrzedna X "<<j+1<<" wierzcholka "<<i+1<<" trojkata: ";
cin>>wierzcholkiX[miejsceX];
miejsceX++;
cout<<"Wprowadz wspolrzedna Y "<<j+1<<" wierzcholka "<<i+1<<" trojkata: ";
cin>>wierzcholkiY[miejsceY];
miejsceY++;
}
}
if(czworo!=0)
for(int i=0; i<czworo; i++)
{
for(int j=0; j<4; j++)
{
cout<<"Wprowadz wspolrzedna X "<<j+1<<" wierzcholka "<<i+1<<" czworokata: ";
cin>>wierzcholkiX[miejsceX];
miejsceX++;
cout<<"Wprowadz wspolrzedna Y "<<j+1<<" wierzcholka "<<i+1<<" czworokata: ";
cin>>wierzcholkiY[miejsceY];
miejsceY++;
}
}
if(kwadraty!=0)
for(int i=0; i<kwadraty; i++)
{
for(int j=0; j<4; j++)
{
cout<<"Wprowadz wspolrzedna X "<<j+1<<" wierzcholka "<<i+1<<" kwadratu: ";
cin>>wierzcholkiX[miejsceX];
miejsceX++;
cout<<"Wprowadz wspolrzedna Y "<<j+1<<" wierzcholka "<<i+1<<" kwadratu: ";
cin>>wierzcholkiY[miejsceY];
miejsceY++;
}
}
}
void wyswietl()
{
int miejsce=0;
if(trojkaty!=0)
for(int i=0; i<trojkaty; i++)
{
cout<<"Wspolrzedne "<<i+1<<" trojkata to: ";
for(int j=miejsce; j<miejsce+3; j++)
{
cout<<"("<<wierzcholkiX[j]<<", "<<wierzcholkiY[j]<<")"<<endl;
}
miejsce=miejsce+3;
}
if(czworo!=0)
for(int i=0; i<czworo; i++)
{
cout<<"Wspolrzedne "<<i+1<<" czworokata to: ";
for(int j=miejsce; j<miejsce+4; j++)
{
cout<<"("<<wierzcholkiX[j]<<", "<<wierzcholkiY[j]<<")"<<endl;
}
miejsce=miejsce+4;
}
if(kwadraty!=0)
for(int i=0; i<kwadraty; i++)
{
cout<<"Wspolrzedne "<<i+1<<" kwadratu to: ";
for(int j=miejsce; j<miejsce+4; j++)
{
cout<<"("<<wierzcholkiX[j]<<", "<<wierzcholkiY[j]<<")"<<endl;
}
miejsce=miejsce+4;
}
}
};
class Trojkat : public Figura//<---------------konstruktor needed ;)
{
public:
double pole()
{
a=sqrt(((x2-x1)^2)+((y2-y1)^2));
b=sqrt(((x3-x2)^2)+((y3-y2)^2));
c=sqrt(((x3-x1)^2)+((y3-y1)^2));
p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
double obwod()
{
a=sqrt(((x2-x1)^2)+((y2-y1)^2));
b=sqrt(((x3-x2)^2)+((y3-y2)^2));
c=sqrt(((x3-x1)^2)+((y3-y1)^2));
return a+b+c;
}
private:
int x1,y1,x2,y2,x3,y3;
double a,b,c,p;
};