当前位置:文档之家› 软件工程数据结构实验教案

软件工程数据结构实验教案

一些补充代码如下:
enum Error_code {success,underflow,overflow};
3.
这个题目的主要目的是熟悉队列这个数据结构,而为了说明问题又用了一个模拟飞机场的程序,因此这个实验项目在程序的找错误调试编译,读源代码上对大家也是一个锻炼。
仔细阅读教科书中关于模拟飞机场这一部分,阅读源代码。实验题目中的源代码并不完整并且有些语法等等的错误,其缺少生成随机数这一个类,附录一会把这个类给大家,有兴趣的话,可以看教科书中的附录,有些介绍。另外,也可以使用随机数生成函数(当然主函数要做相应修改去使用现有的随机数生成函数),使用示例见附录二。
(2)注意要使用c++的输入输出需要加上几行语句如下,因为cout和cin是在命名空间std中的:
#include<iostream>
usingnamespacestd;
2.
这里可以把题目二和题目三合成一个题目,在一个程序中完成就可以了。
合并后的题目如下:自己编程程序实现一个简单的栈,并用于替换题目1中对标准模板库中的栈的使用,同时对自己实现的栈的功能进行扩充,添加实现如下几个函数
1.
读懂实验指导书中的Task1中的程序(使用栈进行序列的顺序反转),并编译运行,通过此了解如果要实现一个栈类,里面需要的基本的成员函数。这个程序在书上也有。
(1)由于程序是用了STL(标准模板库,可以简单的看成是一个函数库,在其中有各种有用的类、函数和算法),栈在其中有实现。栈在STL中的实现用到了类模板,也就是说其栈是独立于类型的,模板提供参数化类型,也就是能将类型名作为参数传递给接收方来建立类或函数。比如stack<double> numbers;中就是声明了一个栈,这个栈中存放的数据类型为double。
另外大家把代码读懂后就可以复制粘贴到编译环境中了,主要是读懂代码。但是,一定要知道,这样直接粘贴的代码并不能直接运行,需要修改其中的一些bug。
这个题目的要求是能读懂代码,明白实现,而且要把代码放到VC中编译调试,使其能正常运行。并通过此,能对程序的编译调试查找错误较为熟悉。
注意,一定要使警告也为0个。
{
seed=seed*multiplier+add_on;
returnseed;
}
Random::Random(boolpseudo)
{
/*Post:The values of seed ,add-on, and multiplier are initialized. The seed is initialized randomly only if pseudo==false*/
一些补充代码如下:
(1)enum Plane_status {null, arriving, departing};
(2)enum Error_code {success,underflow,overflow};
(3)typedef Plane Queue_entry;
一个模拟时间点可以有飞机想起飞,或者有飞机想降落。但是该模拟时间点只能有一架飞机能起飞或者一架飞机能降落(假设飞机场只有一条跑道)
实验教案
重点:
1.掌握如何使用STL中的栈
2.掌握如何自己编写栈的代码
难点:
用数组实现栈的原理,并能用c++描述
具体实验讲解如下:
本实验是要通过几段代码的编写,熟悉栈和队列的编写和应用
在实验指导书中有4个题目,其中题目1、2、3是关于栈的,题目4是关于队列的。其中题目1难度小,题目2和题目3是有联系的,经过努力可以做出,但是题目4难度大些,属于选作内容
具有的类如下:
(1)Extended_queue:队列,实际上是作为飞机场的等待起飞和降落的排队队列,该队列里面放的是飞机类
(2)Plane:飞机类
(3)Rumway:飞机场类,该类中有两个队列作为类成员,分别是等待起飞和降落的队列。由于假设飞机场只有一条跑道,所以,同一时间点只能有一架飞机起飞或者降落。
doublemax=INT_MAX+1.0;
doubletemp=reseed();
(4)Random
附录一
下面是Random类,用于生成随机数,核心代码来自教科书的附录
//Random.h
#ifndefRANDOM_H_
#defineRANDOM_H_
classRandom
{
public:
Random(boolpseudo=true);
//declare random-number generation methods here
(a) clear(b) full() size。
使用新添加的栈函数,显示在进行数字序列反转时输入的十进制数的个数。
注意:
(1)实验题目文档中已经把大部分的代码都给出来了。栈可以用链表或者数组实现,这里是用数组实现。
(2)实验题目中给出的仅仅是部分的代码,自己还需要在看懂的前提下,进行修改补充,才可以达到具体的要求,不明白的地方也可以参考书上这一部分。
};
#endif
//Random.cpp
#include"Random.h"
#include<limits.h>
#include<time.h>
#include<math.h>
intRandom::reseed()
//Post:The seed is replaced by a psuedorandom successor
if(pseudo)
{
seed=1;
}
else
{
seed=static_cast<int>(time(NULL)%INT_MAX);
multiplier=2743;
add_on=5923;
}
}
doubleRandom::random_real()
{
/*Post:A random real number between 0 and 1 is returned*/
doublerandom_real();
intpoisson(doublemean);
private:
intreseed();//re-randomize the seed
intseed;
intmultiplier,add_on;//constants for use in arithmetic operations
相关主题