内存:128  时间:1

题目描述

小聪新买个白板要随意画图形。小聪认为自己变成水平不错了,于是自己编个程序,求随意画的三个图形的面积。但是写了大部分,发现了问题。问题一:三个图形的面积都是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

提示

代码如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PI 3.14
int main()
{
    int a,b,c,d,e,f;
    double area;
    for(int i=0;i<3;i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        scanf("%d",&d);
        if(d==0)area=0;
        else if(d==1)
        {
            scanf("%d",&e);
            area=PI*e*e;
        }
        else if(d==2)
        {
            scanf("%d%d",&e,&f);
            area=f*e;
        }
        printf("Shape%d:color:%d position:%d,%d area:%g
",i,a,b,c,area);
    }
    return 0;
}

代码来源于互联网,仅供参考!