ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:59.44KB ,
资源ID:7889176      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7889176.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《面向对象与C++》上机作业6.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《面向对象与C++》上机作业6.docx

1、面向对象与C+上机作业6教材P2517-5. 声明一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积。使用Rectangle类创建一个派生类Square。class Shape public: double GetArea(); class Rectangle : public Shape ;class Circle : public Shape ;class Square : public Shape ;7-10. 声明一个object类,有数据成员weight及相应得存取操作函数,由此派生出box类,增加数据成员height和

2、width及相应得存取操作函数,声明一个box对象,观察构造函数和析构函数的调用顺序。7-11. 声明一个基类BaseClass,从它派生出类DerivedCalss,BaseClass有成员fn1()、fn2(),DerivedClass也有成员函数fn1()、fn2()。在主函数中声明DerivedClass,分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1()、fn2(),观察运行结果。#include#include#includeusing namespace std;class BaseClass public: void fu

3、n1() cout BaseClass.fun1被调用 endl; void fun2() cout BaseClass.fun2被调用 endl; ;class DerivedCalss : public BaseClass public: void fun1() cout DerivedCalss.fun1被调用 endl; void fun2() cout DerivedCalss.fun2被调用 fun1(); f-fun2(); BaseClass *d; d-fun1(); d-fun2();编程题#1:线性表类仿照示例程序08_05,用数组实现线性表类array,从array中派

4、生子类stack和queue,实现出栈、入栈、出队列、入队列等操作#include using namespace std;class Array public: int a1000; int head; int tail; Array() head = 0; tail = 0; bool empty(); void clear(); void print();bool Array:empty() return head = tail;void Array:clear() head = tail = 0;void Array:print() for(int i = head; i tail;

5、i+) cout ai ; cout n;class Stack : public Array public: Stack(); int Pop(); / 弹出栈顶元素 void Push(int value); / 压栈;int Stack:Pop() if(empty() cout 栈中无元素,弹出失败!n; return 0; else return a-tail; void Stack:Push(int value) if(tail = 999) cout 栈元素满了,添加失败!n; else atail+ = value; class Queue : public Array pub

6、lic: Queue(); int OutQueue(); / 取出队头元素 void InQueue(int value);/ 加入新元素到队尾 ;int Queue:OutQueue() if(empty() cout 队列中无元素,出队列失败!n; return 0; else return ahead+; void Queue:InQueue(int value) if(tail = 999) cout 队列元素满了,添加失败!n; else atail+ = value; int main() Stack s; Queue q; for(int i = 1; i = 10; i+)

7、/1到10放入栈和队列 s.Push(i); q.InQueue(i); s.print(); q.print(); cout 第一次出栈元素: s.Pop() endl; cout 第一次出队列元素: q.OutQueue() endl endl endl; cout 第二次出栈元素: s.Pop() endl; cout 第二次出队列元素: q.OutQueue(); return 0; 编程题2: 魔兽世界之二:装备描述魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市。红司令部,City 1,City 2,City n,蓝司令部两军的司令部都会制造

8、武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五种。每种武士都有编号、生命值这两种属性。有的武士可以拥有武器。武器有三种,sword, bomb,和arrow,编号分别为0,1,2。双方的武士编号都是从1开始计算。红方制造出来的第 n 个武士,编号就是n。同样,蓝方制造出来的第 n 个武士,编号也是n。不同的武士有不同的特点。dragon 可以拥有一件武器。编号为n的dragon降生时即获得编号为 n%3 的武器。dragon还有“士气”这个属性,是个浮点数,其值为它降生后其司令部剩余生命元的数量除以造dragon所需的生命元数量。ninjia可以拥有两件武器

9、。编号为n的ninjia降生时即获得编号为 n%3 和 (n+1)%3的武器。iceman有一件武器。编号为n的iceman降生时即获得编号为 n%3 的武器。lion 有“忠诚度”这个属性,其值等于它降生后其司令部剩余生命元的数目。wolf没特点。请注意,在以后的题目里,武士的士气,生命值,忠诚度在其生存期间都可能发生变化,都有作用,武士手中的武器随着使用攻击力也会发生变化。武士在刚降生的时候有一个生命值。在每个整点,双方的司令部中各有一个武士降生。红方司令部按照 iceman、lion、wolf、ninja、dragon 的顺序循环制造武士。蓝方司令部按照 lion、dragon、ninj

10、a、iceman、wolf 的顺序循环制造武士。制造武士需要生命元。制造一个初始生命值为 m 的武士,司令部中的生命元就要减少 m 个。如果司令部中的生命元不足以制造某个按顺序应该制造的武士,那么司令部就试图制造下一个。如果所有武士都不能制造了,则司令部停止制造武士。给定一个时间,和双方司令部的初始生命元数目,要求你将从0点0分开始到双方司令部停止制造武士为止的所有事件按顺序输出。一共有两种事件,其对应的输出样例如下:1) 武士降生输出样例: 004 blue lion 5 born with strength 5,2 lion in red headquarter表示在 4点整,编号为5的蓝

11、魔lion武士降生,它降生时生命值为5,降生后蓝魔司令部里共有2个lion武士。(为简单起见,不考虑单词的复数形式)注意,每制造出一个新的武士,都要输出此时司令部里共有多少个该种武士。如果造出的是dragon,那么还要输出一行,例:It has a arrow,and its morale is 23.34表示该dragon降生时得到了arrow,其士气是23.34(为简单起见,本题中arrow前面的冠词用a,不用an,士气精确到小数点后面2位,四舍五入)如果造出的是ninjia,那么还要输出一行,例:It has a bomb and a arrow表示该ninjia降生时得到了bomb和a

12、rrow。如果造出的是iceman,那么还要输出一行,例:It has a sword表示该iceman降生时得到了sword。如果造出的是lion,那么还要输出一行,例:Its loyalty is 24表示该lion降生时的忠诚度是24。2) 司令部停止制造武士输出样例: 010 red headquarter stops making warriors表示在 10点整,红方司令部停止制造武士输出事件时:首先按时间顺序输出;同一时间发生的事件,先输出红司令部的,再输出蓝司令部的。输入第一行是一个整数,代表测试数据组数。每组测试数据共两行。第一行,一个整数M。其含义为: 每个司令部一开始都有

13、M个生命元( 1 = M = 10000)第二行:五个整数,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它们都大于0小于等于10000输出对每组测试数据,要求输出从0时0分开始,到双方司令部都停止制造武士为止的所有事件。对每组测试数据,首先输出“Case:n n是测试数据的编号,从1开始接下来按恰当的顺序和格式输出所有事件。每个事件都以事件发生的时间开头,时间以小时为单位,有三位。样例输入1203 4 5 6 7样例输出Case:1000 red iceman 1 born with strength 5,1 iceman in red headquar

14、terIt has a bomb000 blue lion 1 born with strength 6,1 lion in blue headquarterIts loyalty is 14001 red lion 2 born with strength 6,1 lion in red headquarterIts loyalty is 9001 blue dragon 2 born with strength 3,1 dragon in blue headquarterIt has a arrow,and its morale is 3.67002 red wolf 3 born wit

15、h strength 7,1 wolf in red headquarter002 blue ninja 3 born with strength 4,1 ninja in blue headquarterIt has a sword and a bomb003 red headquarter stops making warriors003 blue iceman 4 born with strength 5,1 iceman in blue headquarterIt has a bomb004 blue headquarter stops making warriors#include

16、#include /int转string用的 #include #include using namespace std;int lifevalue1005; /存各组数据各个武士生命值的int lifeofHeadquarter100; /存放司令部的生命元 class Weapon public: int number; string name; int aggressivity; Weapon() Weapon(int ag,string nm ,int num) aggressivity = ag; number = num; name = nm; ; class Sword : pu

17、blic Weapon public: Sword() name = sword; number = 0; aggressivity = 0; Sword(int n) : Weapon(n, sword ,0) ;class Bomb : public Weapon public: Bomb() name = bomb; number = 1; aggressivity = 0; Bomb(int n) : Weapon(n, bomb, 1) ;class Arrow : public Weapon public: Arrow() name = arrow; number = 2; agg

18、ressivity = 0; Arrow(int n) : Weapon(n, arrow, 2) ;Weapon weapon_list3;class Warrior public: string name; /名字 int number; /编号 int life_value; /生命值 int aggressivity; /攻击力 static int warrior_number; Warrior() Warrior(string n, int num, int v, int a = 0) warrior_number+; /自增作为编号 name = n; number = num;

19、 life_value = v; aggressivity = a; ;int Warrior:warrior_number = 0;class Warrior_dragon :public Warrior public: float morale; /士气 Weapon weapon1; Warrior_dragon(string n, int num, int v, int a):Warrior(n, num, v, a) Warrior_dragon(string n, int num, int v, int a, float ml):Warrior(n, num, v, a) mora

20、le = ml; ;class Warrior_ninja :public Warrior public: Weapon weapon1; Weapon weapon2; Warrior_ninja(string n, int num, int v, int a):Warrior(n, num, v, a) ;class Warrior_iceman :public Warrior public: Weapon weapon1; Warrior_iceman(string n, int num, int v, int a):Warrior(n, num, v, a) ;class Warrio

21、r_lion :public Warrior public: int loyalty; Warrior_lion(string n, int num, int v, int a):Warrior(n, num, v, a) loyalty = 0; Warrior_lion(string n, int num, int v, int a, int ly):Warrior(n, num, v, a) loyalty = ly; ;class Warrior_wolf :public Warrior public: Warrior_wolf(string n, int num, int v, in

22、t a):Warrior(n, num, v, a) ;class City public: int number; /编号0即为红司令部,编号1000000则为蓝司令部 int life_value; list all_warriors; City() City(int n, int lv) number = n; life_value = lv; ;class Headquarters : public City public: string make_order5; Headquarters() Headquarters(int n, int lv):City(n,lv) /n为编号 i

23、nt make_warrior(int time, int group);string Int_To_String(int n) ostringstream stream; stream n; return stream.str();int Headquarters:make_warrior(int time, int group) int flag = 0; /标记司令部是否能制造该武士 string start = Int_To_String(time); /要输出的字符串 start.insert(0, 3 - start.length(), 0); /把数值变成004样的字符串 str

24、ing headquarter_name; /司令部名字 if(number = 0) headquarter_name = red; else if(number = 1000000) headquarter_name = blue; start.append(headquarter_name); int index = time % 5; for(int i = 0; i = lifevaluegroup0) flag = 1; life_value -= lifevaluegroup0; Warrior_dragon dragon(dragon, time + 1, lifevalueg

25、roup0, 0); /实例化一武士(名,编号,生命,攻击力) dragon.morale = (float)life_value / lifevaluegroup0; dragon.weapon1 = weapon_listWarrior:warrior_number % 3; all_warriors.push_back(dragon); /把武士放到武士总列表 int dragon_num = 0; /记录总列表中总共多少此类型武士 list:iterator it; /遍历列表 for(it = all_warriors.begin(); it != all_warriors.end(

26、); it+) if(*it).name = dragon) dragon_num+; start.append( dragon ); start.append(Int_To_String(dragon.number); start.append( born with strength ); start.append(Int_To_String(lifevaluegroup0); start.append(,); start.append(Int_To_String(dragon_num); start.append( dragon in); start.append(headquarter_

27、name); start.append( headquartern); start.append(It has a ); start.append(dragon.weapon1.name); start.append(, and its morale is ); float fl = ( (float)( (int)( (dragon.morale + 0.005) * 100 ) ) ) / 100; stringstream os; os fl; string sfl = os.str(); start.append(sfl); start.append(n); cout = lifevaluegr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1