Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- #include<cmath>
- using namespace std;
- class Forma { //Во една игротека има 2 типа играчки: топки и коцки. Коцките и топките
- protected:// се опишани со параметри како што се:
- char boja[20]; //боја (char *)
- int gustina; //густина (int).
- public:
- Forma() { // defaulten
- strcpy(this->boja, "");
- this->gustina = 0;
- }
- Forma(char * boja, int gustina) { // konstruktor so argumenti
- strcpy(this->boja, boja);
- this->gustina = gustina;
- }
- Forma(const Forma &f) { // copy konstruktor ne deka treba ama ae
- strcpy(this->boja, f.boja);
- this->gustina = f.gustina;
- }
- };
- class Igrachka {//Во класата Igrachka да се додаде
- public:
- virtual float getVolumen() = 0;
- virtual float getMasa() = 0;
- //Дополнителни барања:
- virtual float getPlostina() = 0; //уште една чисто виртуелна функција float getPlostina().
- };
- class Topka : public Forma, public Igrachka {
- private:
- int radius; //Дополнително за топките се знае и радиусот (int)
- public:
- Topka() { // defaulten
- this->radius = 0;
- }
- Topka(char * boja, int gustina, int radius) : Forma(boja, gustina) { // so argumenti
- this-> radius = radius;
- }
- Topka(const Topka &t) : Forma(t) { // copy konstruktor ne deka treba
- this->radius = t.radius;
- }
- float getMasa() { //За секоја од класите треба да се дефинираат методи getMasa()
- return gustina * getVolumen();//Масата на играчката се пресметува како производ од волуменот
- } //и густината нa играчката.
- float getVolumen() { //и getVolumen().
- return (4.0/3) * 3.14 * pow(this->radius, 3);
- } //За PI користете ја вредноста 3.14.
- float getPlostina() { //Истата да се имплементира во класите Kocka и Topka
- return getVolumen() * gustina;
- }
- };
- class Kocka : public Forma, public Igrachka {
- private:
- int visina, sirina, dlabocina; //додека за коцките целосните димензии (висина, ширина и длабочина – int).
- public:
- Kocka() {
- this->visina = 0;
- this->sirina = 0;
- this-> dlabocina = 0;
- }
- Kocka(char * boja, int gustina, int visina, int sirina, int dlabocina) : Forma(boja, gustina) {
- this->visina = visina;
- this->sirina = sirina;
- this->dlabocina = dlabocina;
- }
- float getMasa() {
- return this->getVolumen() * this->gustina;
- }
- float getVolumen() {
- return this->visina * this-> sirina * this->dlabocina;
- }
- float getPlostina() {
- return 2*(this->dlabocina*this->sirina + this->dlabocina*this->visina + this->sirina*this->visina);
- }
- };
- int main() { //Во функцијата main да се декларира
- int n;
- cin>>n;
- Igrachka ** kupche = new Igrachka * [n]; //променлива kupche што претставува
- //динамички алоцирана низа кон Igrachka.
- char boja[20];
- int gustina;
- int type;
- int visina;
- int sirina;
- int dlabocina;
- int radius;
- for(int i=0;i<n;i++) { //Во зависност од првиот влезен параметар
- cin>>type;//се внесуваат објекти од класите Topka или Kocka
- if(type == 1) { //(1 - се внесува топка
- cin>>boja>>gustina>>radius;
- kupche[i] = new Topka(boja, gustina, radius);
- }
- if(type == 2) {//2 - се внесува коцка).
- cin>>boja>>gustina>>visina>>sirina>>dlabocina;
- kupche[i] = new Kocka(boja, gustina, visina, sirina, dlabocina);
- }
- }
- char bojap[20];
- int gustinap;
- int ap;
- int bp;
- int cp;//Од тастатура да се внесат податоци за коцката на Петра Kocka petra.
- cin>>bojap>>gustinap>>ap>>bp>>cp;
- Kocka petra(bojap, gustinap, ap, bp, cp);
- double total = 0.0;
- for(int i=0; i<n; i++) {// Dа се отпечати DA ако
- total = total + kupche[i]->getMasa(); //вкупната маса на сите играчки е поголема
- }
- if(total > petra.getMasa()) //од масата на играчката на Петра,
- cout<<"DA"<<endl;
- else cout<<"NE"<<endl;//а NE во спротивно.
- double maxvolumen = kupche[0]->getVolumen(); // Разликата по апсолутна вредност на
- double minplostina = kupche[0]->getPlostina(); // Разликата по апсолутна вредност на
- for(int i=1; i<n; i++) {
- if(kupche[i]->getVolumen() > maxvolumen) //волуменот на играчката со максимален волумен
- maxvolumen = kupche[i]->getVolumen();//во купчето и волуменот на коцката на Петра. Форматот е:
- if(kupche[i]->getPlostina() < minplostina)//плоштината на играчката со минимална плоштина
- minplostina = kupche[i]->getPlostina();// во купчето и плоштината на коцката на Петра
- }
- double razlikavolumen, razlikaplostina;
- razlikavolumen = fabs(maxvolumen - petra.getVolumen());
- razlikaplostina = fabs(minplostina - petra.getPlostina());
- cout<<"Razlikata e: "<<razlikavolumen<<endl;// Razlikata e: {razlika}
- cout<<"Razlikata e: "<<razlikaplostina<<endl;//во истиот формат како и второто барање погоре.
- delete [] kupche;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement