2012综合实验四-参考答案(6)

2019-07-31 09:31

}

}

return 0;

}

}

lect j(n);

cout<

10. 计算图形面积和周长(抽象类 )

a) 题目描述

一个矩形可用两个点表示,一个三角形可用三个点来表示,一个圆可用一个点和一个半径来表示。

请实现一个抽象类Shape及接口方法(double area();double perimeter())和三个派生类Rect、Triagle、Circle,通过构造三种派生类的对象的方式来计算给出的矩形、三角形和圆形的面积area和周长perimeter。 b) 输入描述

有多行输入,第一行为几何形状的数目n,其余n行,每行代表一个形状,其中每行第一个字符串为几何形状字符串,矩形为Rect,三角形为Triangle,圆形为Circle(请注意大小写)。其余为相应形状的几何数据数字,之间用空格分隔(每个点用x,y两个坐标表示,x坐标在前,y坐标在后),如 Rect x1 y1 x2 y2 Circle x y r

Triangle x1 y1 x2 y2 x3 y3 c) 输出描述

有多行结果,每行为对应几何形状的面积和周长(PI=3.14159,保留到小数点后5位),两个数字之间用一个空格分隔. d) 样例输入

3

Rect 0 0 2 4 Circle 0 0 3

Triangle 0 0 2 2 2 0 e) 样例输出

8.00000 12.00000 28.27431 18.84954 2.00000 6.82843

参考程序:

/******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming) Task 10

Programmed by YE Huanzhuo

Lakeside Nov.28, 2012

********************************************************/ #include #include #include using namespace std;

const double PI=3.14159;

class shape { virtual double area()=0; virtual double perimeter()=0; };

class Rect: public shape { double x1, y1, x2, y2; public: Rect(double x1, double y1, double x2, double y2) : x1(x1), y1(y1), x2(x2), y2(y2) {} double area() { return fabs((x1-x2)*(y1-y2)); } double perimeter() { return 2*(fabs(x1-x2)+fabs(y1-y2)); } };

class Triangle: public shape { double x1, y1, x2, y2, x3, y3; public: Triangle(double x1, double y1, double x2, double y2, double x3, double y3) : x1(x1), y1(y1), x2(x2), y2(y2), x3(x3), y3(y3) {} double area() { return fabs(x1*y2+x2*y3+x3*y1-x3*y2-x2*y1-x1*y3)/2; } double perimeter() {

return

sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))+sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3))+sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)); } };

class Circle: public shape { double x, y, r; public: Circle(double x, double y, double r):x(x), y(y), r(r) {} double area() { return PI*r*r; } double perimeter() { return 2*PI*r; } };

int main() { double x1, y1, x2, y2, x3, y3, r; char s[10]; int n, i; cin>>n; cout<>s; if(strcmp(s, \ { cin>>x1>>y1>>x2>>y2; Rect R(x1, y1, x2, y2); cout<>x1>>y1>>r; Circle C(x1, y1, r); cout<

}

}

return 0;

{ }

cin>>x1>>y1>>x2>>y2>>x3>>y3; Triangle T(x1, y1, x2, y2, x3, y3);

cout<

11. 简单高精度计算

a) 题目描述

整型是经常使用的数据类型, 常用的32位整数表示精度不超过10位十进制整数。在很多运算中往往需要更高的精度,这时就必须自己编程突破系统已经定义数据类型的限制。

一个可行的方法是采用一个数组表示一个大的整数,每一个数组元素表示这个大整数的一位。例如定义一个数组a[30],其各个元素分别为:9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0,则可以用来表示30位十进制整数987654321098765432109876543210。 请你编写程序(不考虑负数): i. 定义一个非负整数类BigInteger,在类中使用动态分配存储空间来存放整数的

各个数位,并实现非负大整数的

1. 初始化、复制、赋值、输入、显示; 2. 关系运算

3. 加法、减法(求两个操作数之差的绝对值,结果非负)、乘法运算; ii. 编写主程序利用非负整数类BigInteger完成各类运算,并输出结果 b) 输入描述

输入有多组样例,每组样例由三行组成,第一行为操作数a,第二行为运算符op,第三行为操作数b。其中a,b均为位数少于1000位的非负整数,op为下列运算之一:+、-、*、==、!=、>、>=、<、<=(其中减法定义为求两个操作数之差的绝对值) c) 输出描述

计算a op b的结果(算术运算的结果少于1000位),针对每组输入样例输出一行。输出的算术运算结果要符合一般的数学表示习惯(例如,最高有效位的左边不能有前导的’0’),输出的关系运算结果以1表示真,0表示假。 d) 样例输入

7798422038462027206418091570017038214954325158287284501126509864550 +

6644654478671

154455686168668608742 -

570620325535649714352477856211346877690604957811744787310 13806496961264274782575849549700031 *

104278462284302057284605155421424724 261800913745549144387657570462003847824 ==

30945390762104982326

61806052973400618783421149497858757508903905734886054976023347098394999878472342427167682 !=

550319305638993185926221

33485160132480328875209155849017229 >

48706055658499024618501666452069820990222680543730745561173

223255953006515880343449832824383387870686263650800589681213456312563835423612992344693965267757962348828739 >=

8459231671237698245612414056673245577830476701292941849484054454038774 712609293697698786056941590556285144547080247621820218851422961751623938783603762 <

1806413112049773972123323007151923718757730213899815509196276039659381252042527294867590492

136564321671754460256400172008142164350078857012092315307 <=

907145092560931574534094350840314027165670909824872 e) 样例输出

7798422038462027206418091570017038214954325158287284507771164343221 570620325535649714352477856211346877536149271643076178568

1439720272653527639853476844171700671299791197920011931807664846966444 0 1 0 1 1 0 参考程序:

/******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming) Task 11

Programmed by YE Huanzhuo Lakeside Nov.28, 2012


2012综合实验四-参考答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“小学生学习对联,提高语文素养” 实验报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: