Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*O
- Игротека
- Во една игротека има 2 типа играчки: топки и коцки. Коцките и топките се опишани со параметри како што се:
- боја (char *)
- густина (int).
- Дополнително за топките се знае и радиусот (int), додека за коцките целосните димензии (висина, ширина и длабочина – int).
- За секоја од класите треба да се дефинираат методи getMasa() и getVolumen(). Масата на играчката се пресметува како производ од волуменот и густината на играчката. За PI користете ја вредноста 3.14.
- Во функцијата main да се декларира променлива kupche што претставува динамички алоцирана низа кон Igrachka. Во зависност од првиот влезен параметар се внесуваат објекти од класите Topka или Kocka (1 - се внесува топка, 2 - се внесува коцка).
- Од тастатура да се внесат податоци за коцката на Петра Kocka petra. Во главната функција во да се отпечатат:
- Да се отпечати DA ако вкупната маса на сите играчки е поголема од масата на играчката на Петра, а NE во спротивно.
- Разликата по апсолутна вредност на волуменот на играчката со максимален волумен во купчето и волуменот на коцката на Петра. Форматот е:
- Razlikata e: {razlika}
- Задачата да се реши со тоа што класите Kocka и Topka ќе наследуваат од класите Forma и Igrachka.
- Дополнителни барања:
- Во класата Igrachka да се додаде уште една чисто виртуелна функција float getPlostina(). Истата да се имплементира во класите Kocka и Topka
- Во главната функција, дополнително да се испечати и: Разликата по апсолутна вредност на плоштината на играчката со минимална плоштина во кучето и плоштината на коцката на Петра во истиот формат како и второто барање погоре.*/
- #include <iostream>
- #include <cstring>
- #include <cmath>
- using namespace std;
- class Igrachka {
- public:
- Igrachka(){}
- virtual float getVolumen() = 0;
- virtual float getMasa() = 0;
- virtual float getPlostina()=0;
- };
- class Forma {
- protected:
- char boja[100];
- int gustina;
- public:
- Forma(){
- boja[0]='\0';
- gustina=0;
- }
- Forma(char * _boja,int _gustina){
- strcpy(boja,_boja);
- gustina=_gustina;
- }
- };
- class Topka :public Forma,public Igrachka{
- private:
- int radius;
- public:
- Topka(char * _boja,int _gustina,int r){
- strcpy(boja,_boja);
- gustina=_gustina;
- radius=r;
- }
- Topka & operator = (const Topka & t){
- strcpy(boja,t.boja);
- gustina=t.gustina;
- radius=t.radius;
- }
- float getMasa(){
- return this->getVolumen()*this->gustina;
- }
- float getVolumen(){
- float k=(4.0/3)*3.14;
- return k*radius*radius*radius;
- }
- float getPlostina(){
- return 3.14*4*radius*radius;
- }
- };
- class Kocka :public Forma,public Igrachka{
- private:
- int a;
- int b;
- int c;
- public:
- Kocka(char * _boja,int _gustina,int x,int y,int z){
- strcpy(boja,_boja);
- gustina=_gustina;
- a=x;
- b=y;
- c=z;
- }
- Kocka & operator=(const Kocka & k){
- strcpy(boja,k.boja);
- gustina=k.gustina;
- a=k.a;
- b=k.b;
- c=k.c;
- }
- float getMasa(){
- return this->getVolumen()*this->gustina;
- }
- float getVolumen(){
- return a*b*c;
- }
- float getPlostina(){
- return 2*(a*b+b*c+a*c);
- }
- };
- int main(){
- int n;
- cin>>n;
- Igrachka ** kupche;
- kupche=new Igrachka*[n];
- char boja[100];
- int tip,gustina,r,a,b,c;
- for (int i=0;i<n;i++){
- cin>>tip;
- if (tip==1){
- cin>>boja>>gustina>>r;
- kupche[i]=new Topka(boja,gustina,r);
- }
- else {
- cin>>boja>>gustina>>a>>b>>c;
- kupche[i]=new Kocka(boja,gustina,a,b,c);
- }
- }
- cin>>boja>>gustina>>a>>b>>c;
- Kocka k(boja,gustina,a,b,c);
- float maxi=0;
- float seg,vk=0;
- float masapetra=k.getMasa();
- for (int i=0;i<n;i++){
- seg=kupche[i]->getMasa();
- vk+=seg;
- seg=kupche[i]->getVolumen();
- if (seg>maxi)maxi=seg;
- }
- float volumenpetra=k.getVolumen();
- if (vk>masapetra)cout<<"DA"<<endl;
- else cout<<"NE"<<endl;
- cout<<"Razlikata e: ";
- if (volumenpetra>maxi)cout<<volumenpetra-maxi<<endl;
- else cout<<maxi-volumenpetra<<endl;
- float petraplos=k.getPlostina();
- float mini=1000000;
- for (int i=0;i<n;i++){
- seg=kupche[i]->getPlostina();
- if (seg<mini)mini=seg;
- }
- cout<<"Razlikata e: ";
- if (petraplos>mini)cout<<petraplos-mini<<endl;
- else cout<<mini-petraplos<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement