Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class Kvadrat { //Да се дефинира класата Kvadrat во која што се чува информација за:
- protected:
- double a; //должината на страната а на квадратот (double)
- public: //За класата да се дефинираат:
- Kvadrat(){} //default конструктор
- Kvadrat(double a) { //конструктор со аргументи
- this->a=a;
- }
- Kvadrat(const Kvadrat &k) { //copy конструктор
- this->a=k.a;
- }
- double perimetar() { //double perimetar () што пресметува периметар на квадратот
- return 4*a;
- }
- double plostina() { //double plostina () што пресметува плоштина на квадратот
- return a*a;
- }
- void pecati() { //void pecati () што печати информации за квадратот како во тест примерите
- cout<<"Kvadrat so dolzina a="<<a<<" ima plostina P="<<plostina()<<" i perimetar L="<<perimetar()<<endl;
- }
- };
- class Pravoagolnik : public Kvadrat { //Да се имплементира класа Pravoagolnik што наследува од класата Kvadrat.
- private: //Bo неа се чуваат дополнителни информации за:
- double x; //проширувањето x на двете паралелни страни на квадратот (double)
- double y; //проширувањето у на другите две паралелни страни (double)
- public: //За класата да се дефинираат:
- Pravoagolnik(){ //default конструктор
- this->x=0;
- this->y=0;
- }
- Pravoagolnik(const Kvadrat &k, double x, double y) : Kvadrat(k) { //конструктор Pravoagolnik (const Kvadrat &k, double x, double y)
- this->x=x;
- this->y=y;
- }
- Pravoagolnik(const Pravoagolnik &p) { //copy конструктор
- this->x=p.x;
- this->y=p.y;
- }
- double perimetar() { //Да се препокријат трите методи дефинирани погоре за класата Kvadrat.
- return (a+x)*2 + (a+y)*2; //2a+2b = L
- }
- double plostina() {
- return (a+x)*(a+y); // a*b = P
- }
- void pecati() {
- if(a+x != a+y) //ako ne se isti pravoagolnik e i printaj za pravoagolnik
- cout<<"Pravoagolnik so strani: "<<a+x<<" i "<<a+y<<" ima plostina P="<<plostina()<<" i perimetar L="<<perimetar()<<endl;
- else {
- a = a+x; // strana na a = stranata plus prosiruvanjeto
- Kvadrat::pecati(); } //ako se isti printaj za kvadrat
- }
- };
- int main() {
- int n;
- double a,x,y;
- Kvadrat * kvadrati;
- Pravoagolnik * pravoagolnici;
- cin>>n;
- kvadrati = new Kvadrat [n];
- pravoagolnici = new Pravoagolnik [n];
- for (int i=0;i<n;i++){
- cin>>a;
- kvadrati[i] = Kvadrat(a);
- }
- for (int i=0;i<n;i++){
- cin>>x>>y;
- pravoagolnici[i]=Pravoagolnik(kvadrati[i],x,y);
- }
- int testCase;
- cin>>testCase;
- if (testCase==1){
- cout<<"===Testiranje na klasata Kvadrat==="<<endl;
- for (int i=0;i<n;i++)
- kvadrati[i].pecati();
- }
- else {
- cout<<"===Testiranje na klasata Pravoagolnik==="<<endl;
- for (int i=0;i<n;i++)
- pravoagolnici[i].pecati();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement