实验12:Problem B: 图形计数与求面积

注意构造函数中的数据类型是double类型,如果定义成int会出错,而且一旦出错很不容易发现这个错误

Home Web Board ProblemSet Standing Status Statistics

Problem B: 图形计数与求面积

Problem B: 图形计数与求面积

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 563  Solved: 360
[Submit][Status][Web Board]

Description

定义三个类:Shape、Circle和Square,其中Shape为抽象类,包括:

1. 用于记录Shape类及其子类对象(即图形)个数的静态数据成员。

2. 构造函数与析构函数。

3. 获得图形个数的静态成员函数 static int getNumOfShapes(),以及

4. 求图形面积的纯虚函数getArea()。

类Circle是Shape类的子类,包括:

1. 用于记录Circle类对象(即圆)个数的静态数据成员。

2. 表示半径的double类型数据成员。

3. 构造函数和析构函数。

4. 重写的基类函数getArea(),用于求圆的面积,其中圆周率取值为3.14。

5. 用于获得圆个数的静态成员函数static int getNumOfCircles()。

类Square也是Shape类的子类,包括:

1. 用于记录Square类对象(即正方形)个数的静态数据成员。

2. 表示边长的double类型数据成员。

3. 构造函数和析构函数。

4. 重写的基类函数getArea(),用于求正方形的面积。

5. 用于获得正方形个数的静态成员函数static int getNumOfSquares()。

注意:所有用于记录个数的静态成员只增不减。

Input

第1行N>0,表示有N个测试用例。

每个测试用例分2部分:第1部分是1个字符C或者S,表示产生一个圆或者正方形;第2部分是一个实数,是圆的半径或正方形的边长。

Output

见样例。

其中面积输出2位小数。

Sample Input

2
C 1.1
S 2.34

Sample Output

numOfShapes = 0, numOfCircles = 0, numOfSquares = 0
A shape is created!
A circle is created!
Area = 3.80
A circle is erased!
A shape is erased!
A shape is created!
A square is created!
Area = 5.48
A square is erased!
A shape is erased!
numOfShapes = 2, numOfCircles = 1, numOfSquares = 1

HINT

Append Code

append.cc,

[Submit][Status][Web Board]

HOME
Back


-->

???<中文?????English???All Copyright Reserved 2010-2011SDUSTOJTEAMGPL2.02003-2011HUSTOJ ProjectTEAM
Anything about the Problems, Please Contact Admin:
admin

#include<iostream>
#include<iomanip>

using namespace std;
class Shape{
public:
    static int num;
    Shape(){num++;cout<<"A shape is created!"<<endl;}
    virtual ~Shape(){cout<<"A shape is erased!"<<endl;}
    static int getNumOfShapes(){return num;}
    virtual double getArea()=0;
};

class Circle: public Shape{
public:
    double r;
    static int num1;
    Circle(double a=0):r(a){num1++;cout<<"A circle is created!"<<endl;}
    ~Circle(){cout<<"A circle is erased!"<<endl;}
    double getArea(){return 3.14*r*r;}
    static int getNumOfCircles(){return num1;}
};
class Square:public Shape{
public:
    double s;
    static int num2;
    Square(double a=0):s(a){num2++;cout<<"A square is created!"<<endl;}
    ~Square(){cout<<"A square is erased!"<<endl;}
    double getArea(){return s*s;}
    static int getNumOfSquares(){return num2;}
};
int Shape::num=0;
int Circle::num1=0;
int Square::num2=0;
int main()
{
    int cases;
    char type;
    double data;
    Shape *shape;
    cin>>cases;
    cout<<"numOfShapes = "<<Shape::getNumOfShapes();
    cout<<", numOfCircles = "<<Circle::getNumOfCircles();
    cout<<", numOfSquares = "<<Square::getNumOfSquares()<<endl;
    for (int i = 0; i < cases; i++)
    {
        cin>>type>>data;
        switch(type)
        {
        case ‘C‘:
            shape = new Circle(data);
            break;
        case ‘S‘:
            shape = new Square(data);
            break;
        }
        cout<<"Area = "<<setprecision(2)<<fixed<<shape->getArea()<<endl;
        delete shape;
    }
    cout<<"numOfShapes = "<<Shape::getNumOfShapes();
    cout<<", numOfCircles = "<<Circle::getNumOfCircles();
    cout<<", numOfSquares = "<<Square::getNumOfSquares()<<endl;
}
时间: 2024-10-24 11:51:07

实验12:Problem B: 图形计数与求面积的相关文章

【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(1)

http://www.4gamer.net/games/216/G021678/20140703095/ 新连载「实验做出的游戏图形」,是聚焦在特定游戏的图形上, 对它的结构和使用的技术解说为主旨.之前笔者连载的「西川善司的3D游戏入迷」,覆盖范围都很广,而与特定游戏强关联的技术解说,会在今后的新连载中处理. 作为纪念的第一回选择的,是Arc System Works开发的,2014年2月在街机上运作的格斗游戏「GUILTY GEAR Xrd -SIGN-」 全3D图形的GUILTY GEAR

数据结构实验之栈三:后缀式求值 (stack)

数据结构实验之栈三:后缀式求值 Time Limit: 1000MS Memory limit: 65536K 题目描述 对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值. 输入 输入一个算术表达式的后缀式字符串,以‘#’作为结束标志. 输出 求该后缀式所对应的算术表达式的值,并输出之. 示例输入 59*684/-3*+# 示例输出 57 1 #include<stdio.h> 2 #include<string.h> 3 #include&

实验十四 Swing图形界面组件

实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程序1 在elipse IDE中运行教材479页程序12-1,结合运行结果理解程序: 掌握各种布局管理器的用法: 理解GUI界面中事件处理技术的用途. 在布局管理应用代码处添加注释: 测试结果: 这个程序是一个网格布局,网格布局像一

求一组图形中的最大面积

package oo.day06;//求一组图形中的最大面积public class ShapeTest { public static void main(String[] args) { //Shape s = new Shape(); //编译错误,抽象类不能被实例化 Shape[] shapes = new Shape[4]; //创建Shape数组对象 shapes[0] = new Circle(1); //向上造型 shapes[1] = new Circle(2); shapes

Codeforces Round #261 (Div. 2) D. Pashmak and Parmida&#39;s problem (树状数组求逆序数 变形)

题目链接 题意: 给出一些数a[n],求(i, j), i<j 的数量,使得:f(1, i, a[i]) > f(j, n, a[j]) . f(lhs, rhs, x) 指在 { [lhs, rhs]范围中,a[k]的值=x } 的数量. 1.  f(1, i, a[i]) 就是指a[i]前面包括a[i]的数中,有几个值=a[i]. 2.  f(j, n, a[j]) 就是指a[j]后面包括a[j]的数中有几个值=a[j]. 虽然a[x]范围不小,但是n的范围是1000,不是很大,所以我们可

数据结构实验之栈三:后缀式求值

数据结构实验之栈三:后缀式求值 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值. 输入 输入一个算术表达式的后缀式字符串,以'#'作为结束标志. 输出 求该后缀式所对应的算术表达式的值,并输出之. 示例输入 59*684/-3*+# 示例输出 57 提示 基本操作数都是一位正整数! 来源 示例程序 #include <stdio.h>

Cisco PT模拟实验(12) 路由器静态路由的配置

Cisco PT模拟实验(12) 路由器静态路由的配置 实验目的: 掌握静态路由的配置方法和应用 掌握路由选择表中的路由描述 熟悉路由选择和分组转发的原理及过程 实验背景: 某公司除总部外,另有一处分部,并且都有一个独立的局域网,为了使公司各部之间能相互通信,共享资源.每个出口利用一台路由器进行连接,两台路由器间公司申请了一条DDN专线(数字数据网)进行相连,要求做适当配置实现相互访问. 技术原理: 路由器属于网络层设备,能够根据IP数据报的首部信息,选择一条最佳路径(这一过程称为"路由选择&q

【POJ1681】Painter&#39;s Problem 高斯消元,求最小∑系数的异或方程组

#include <stdio.h> int main() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/43483547"); } -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 题意: 多组数据. 有个n*n的正方形,然后你要对某些位置进行操作,使得最后灯的状态都变成y.

bzoj1502 simpson求面积

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1502 题解: simpson积分求面积,s = (f(a)+f(b)+4*f(c))/6*Δx ,c=(a+b)/2. 题中的树投影下来是一些圆和相邻圆的公切线组成的一个封闭图形,并且上下对称,所以可以只求上半部分. simpson求面积时,若f(x)代价很大,要尽量减少其的重复调用.其次尽量优化f(x)函数的计算. 写完后还要自己出极限随机数据,将eps调到能接受的最大值. 1 #incl