프로그래밍

 3198, 1/160 회원가입  로그인  
   jkh0721
   c++ 도형문제

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3430 [복사]



아래 코드에서 밑으로 내려가면 void main()  파트가 있는데 그 파트만 주석 좀 달아주세요
나머진 이해가 가는데 거기만 잘 모르겠어요

#include <iostream>
#include <string>
using namespace std;

class Shape{
protected:
        int x, y;
public:
        virtual ~Shape() {}
        virtual void draw()=0;
};
class TwoDimShape:public Shape{
public:
        virtual double getArea()=0;
};
class ThreeDimShape:public Shape{
public:
        virtual double getVolume()=0;
};
class Rectangle : public TwoDimShape{
private:
        int width, height;
public:
        
        void setWidth(int w){width = w;}
        void setHeight(int h){height = h;}
        void draw() {cout << "Ractangle Draw"<<endl;}
        double getArea(){return width*height;}
};
class Ellipse : public TwoDimShape{
private:
        double LongAxis, ShortAxis;
public:
Ellipse() {}
        ~Ellipse() {}
        void setLongAxis(int l){LongAxis=l;}
        void setShortAxis(int s){ShortAxis=s;}
        void draw() {cout << "Ellipse Draw"<<endl;}
        double getArea(){return 3.14*LongAxis*ShortAxis/4;}
};
class Triangle : public TwoDimShape{
private:
        int width, height;
public:
        
        void setWidth(int w){width = w;}
        void setHeight(int h){height = h;}
        void draw() {cout << "Triangle Draw"<<endl;}
        double getArea(){return (double)width*height/2;}
};
class Shpere : public ThreeDimShape{
private:
        int radius;
public:
        void setRadius(int r){radius = r;}
        double getVolume(){return 3.14*radius*radius*radius*4/3;}
        void draw() {cout << "Shpere Draw"<<endl;}
};
class Cube : public ThreeDimShape{
private:
        int length;
        int width;
        int height;
public:
        void setLength(int l){length=l;}
        void setWidth(int w){width=w;}
        void setHeight(int h){height=h;}
        double getVolume(){return length*width*height;}
        void draw() {cout << "Cube Draw"<<endl;}
};
class Cylinder : public ThreeDimShape{
private:
        int radius;
        int height;
public:
        void setRadius(int r){radius = r;}
        void setHeight(int h){height = h;}
        double getVolume(){return 3.14*radius*radius*height;}
        void draw() {cout << "Cylinder Draw"<<endl;}
};
void main() {
        Shape *arrayOfShapes[6];
        arrayOfShapes[0] = new Rectangle;
        ((Rectangle*)arrayOfShapes[0])->setWidth(10);
        ((Rectangle*)arrayOfShapes[0])->setHeight(10);
        arrayOfShapes[1] = new Ellipse;
        ((Ellipse*)arrayOfShapes[1])->setLongAxis(10);
        ((Ellipse*)arrayOfShapes[1])->setShortAxis(10);
        arrayOfShapes[2] = new Triangle;
        ((Triangle*)arrayOfShapes[2])->setWidth(10);
        ((Triangle*)arrayOfShapes[2])->setHeight(10);
        arrayOfShapes[3] = new Shpere;
        ((Shpere*)arrayOfShapes[3])->setRadius(10);
        arrayOfShapes[4] = new Cube;
        ((Cube*)arrayOfShapes[4])->setWidth(10);
        ((Cube*)arrayOfShapes[4])->setHeight(10);
        ((Cube*)arrayOfShapes[4])->setLength(10);
        arrayOfShapes[5] = new Cylinder;
        ((Cylinder*)arrayOfShapes[5])->setRadius(10);
        ((Cylinder*)arrayOfShapes[5])->setHeight(10);
        cout << "모든길이반지름가로세로높이의길이를10이라가정<<endl;
        for(int i=0; i<6;i++){
                arrayOfShapes[i]->draw();
                if(i<3) cout << "도형의넓이: " << ((TwoDimShape *)arrayOfShapes[i])->getArea() <<endl;
                else cout <<"도형의부피: " << ((ThreeDimShape *)arrayOfShapes[i])->getVolume() <<endl;
        }
};

  Hit : 7691     Date : 2012/06/03 09:56