Shape系列-9
时间: 1ms 内存:128M
描述:
小聪新买个白板要随意画图形。小聪认为自己变成水平不错了,于是自己编个程序,求随意画的三个图形的面积。但是写了大部分,发现了问题。问题一:三个图形的面积都是10000;问题二,case语句写的不好。小聪认为小强的Shape类有问题,请小强修改Shape类,并且帮自己完善case语句。下面是小聪给小强的程序代码。
#include<ctime>
#include<iostream>
#define PI 3.14
using namespace std;class Shape
{
public:
Shape(int c=0){color=c;}
int getColor(){return color;}
double area(){return 10000;};
protected:
int color;
};class Point:public Shape
{
public:
Point(int c=0,double a=0,double b=0):Shape(c){x=a;y=b;}
double getX(){return x;}
double getY(){return y;}
double area(){return 0;}
protected:
double x,y;
};class Circle:public Point
{
public:
Circle(int c=0,double a=0,double b=0,double r=0)
:Point(c,a,b){radius=r;}
double getRadius(){return radius;}
double area(){return PI*radius*radius;}
private:
double radius;
};class Rectangle:public Point
{
public:
Rectangle(int c=0, double a=0,double b=0,double w=0,double h=0):
Point(c,a,b),width(w),height(h){}
double getWidth(){return width;}
double getHeight(){return height;}
double area(){return width*height;}
private:
double width,height;
};int main()
{
int i,k,a,b,r,c,w,h;
Shape *pt[3];
for(i=0;i<3;i++)
{
cin>>c;
cin>>a>>b;
cin>>k;
switch(k)
{
**************
小聪的Case语句
**************
}
}
for(i=0;i<3;i++)
{
cout<<"Shape"<<i<<":color:"<<pt[i]->getColor()<<
" position:"<<pt[i]->getX()<<","<<pt[i]->getY()<<
" area:"<<pt[i]->area()<<endl;
}
return 0;
}提示:请改错并填充后提交完整的程序。
输入:
三个图形的信息。每个图形的输入为三行。
第一行:图形的颜色c、位置 a 和 b;
第二行:图形的判定标志 k:0为点,1 为圆,2 为矩形;
第三行:图形的其他信息:点无信息、圆为半径r,矩形为宽w和高h。
输出:
三个图形的颜色、位置和面积。
示例输入:
5 1 2
0
6 2 3
1
1
7 3 4
2
10 20
示例输出:
Shape0:color:5 position:1,2 area:0
Shape1:color:6 position:2,3 area:3.14
Shape2:color:7 position:3,4 area:200
提示:
参考答案:
文章评论