Problem A: 求圖形的面積和體積 Problem A: 求圖形的面積和體積 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2189 Solved: 1307[Submit][Status][Web Board] Description 根據不同的 ...
Home | Web Board | ProblemSet | Standing | Status | Statistics |
Problem A: 求圖形的面積和體積
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2189 Solved: 1307
[Submit][Status][Web Board]
Description
根據不同的圖形,求面積或體積輸出。圓周率取3.14。 main()函數中使用多態的思想,用派生樹上最早祖先類Graphic的指針創建和訪問其孩子類的對象。 圖形(Graphic類)分作平面圖形(Shape類)和立體圖形(Solid類)兩種。 正方形(Square類)是一種平面圖形,圓形(Circle)也是。 球體(Ball類)是一種立體圖形,也是圓形的擴充。 立方體(Cube類)是一種立體圖形,也是正方形的擴充。 ----------------------------------------------------------------------------- 你設計一系列類,滿足上述派生樹的要求,使得main()函數能夠正確運行。 函數調用格式見append.cc。 append.cc中已給出main()函數。 -----------------------------------------------------------------------------
Input
輸入的第一個整數n(n<100),表示有n組測試數據。每組測試數據由兩部分組成:一是圖形的類型,有“square”、“cube”、“ball”、“circle”四種,分別表示正方形、立方體、球體、圓形;二是這種圖形的邊長或者半徑,用double類型存儲。
Output
每組測試數據給出一行輸出。 對應這四種不同的圖形,分別產生四種輸出: 正方形輸出:“Square, side:x, area:y.”,x為輸入的邊長,y為面積。 立方體輸出:“Cube, side:x, area:y, volume:z.”,x為輸入的邊長,y為錶面積,z為體積。 球體輸出:“Ball, radius:x, area:y, volume:z.”,x為輸入的半徑,y為錶面積,z為體積。 圓形輸出:“Circle, radius:x, area:y.”,x為輸入的半徑,y為面積。
Sample Input
6 square 3 cube 3 ball 4 circle 4 cube 2 circle 1Sample Output
Square, side:3, area:9. Cube, side:3, area:54, volume:27. Ball, radius:4, area:200.96, volume:200.96. Circle, radius:4, area:50.24. Cube, side:2, area:24, volume:8. Circle, radius:1, area:3.14.HINT
Append Code
append.cc,
한국어<
中文
فارسی
English
ไทย
All Copyright Reserved 2010-2011 SDUSTOJ TEAM
GPL2.0 2003-2011 HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin
#include<iostream> #define PI 3.14 using namespace std; class Graphic{ public: string name; int lr; Graphic(string a,double b):name(a),lr(b){} virtual void show()=0; }; class Square:public Graphic{ public: Square(double a):Graphic("Square",a){} void show(){cout<<"Square, side:"<<lr<<", area:"<<lr*lr<<"."<<endl;} }; class Circle:public Graphic{ public: Circle(double a):Graphic("Circle",a){} void show(){cout<<"Circle, radius:"<<lr<<", area:"<<PI*lr*lr<<"."<<endl;} }; class Ball:public Graphic{ public: Ball(double a):Graphic("Ball",a){} void show(){cout<<"Ball, radius:"<<lr<<", area:"<<4*PI*lr*lr<<", volume:"<<(4/3)*PI*lr*lr*lr<<"."<<endl;} }; class Cube:public Graphic{ public: Cube(double a):Graphic("Cube",a){} void show(){cout<<"Cube, side:"<<lr<<", area:"<<6*lr*lr<<", volume:"<<lr*lr*lr<<"."<<endl;} }; int main() { Graphic *gp[100]; int cases; cin>>cases; for(int i = 0; i < cases; ++i) { string types; double value; cin>>types>>value; if(types == "square") gp[i] = new Square(value); if(types == "cube") gp[i] = new Cube(value); if(types == "ball") gp[i] = new Ball(value); if(types == "circle") gp[i] = new Circle(value); } for(int i = 0; i < cases; ++i) { gp[i]->show(); delete gp[i]; } }