天津商学院学生实验报告
开课实验室:5号实训楼608 开课时间 20## 年10 月 11 日 实验报告2013 年 11 月13 日
注1.每个实验项目一份实验报告。2.实验报告第一页学生必须使用规定的实验报告纸书写,附页用实验报告附页纸或A4纸书写,字迹工整,曲线要画在坐标纸上,线路图要整齐、清楚(不得徒手画)。3.实验教师必须对每份实验报告进行批改,用红笔指出实验报告中的错、漏之处,并给出评语、成绩,签全名、注明日期。4.待实验课程结束以后,要求学生把实验报告整理好,交给实验指导教师,加上实验课学生考勤及成绩登记表(见附件2)、目录和学院统一的封面(见附件3)后,统一装订成册存档。
共 页 第 页 制表单位:设备处
第二篇:实验报告二(1)
学生实验报告
学 院: 软件与通信工程学院
课程名称: 离散数学(软件)
专业班级: 12软件1班
姓 名: 段谟毅
学 号: 0123747
学生实验报告(1)
一、实验综述
1、实验目的及要求
(1)熟悉图在计算机中的矩阵表示;
(2)编写程序,根据输入的整数对,输出一个图形的邻接矩阵,并求出各结点的出度和入度;
(3)加强对图知识的理解、应用和运用能力。
实验要求:
给出如下有向图D,利用邻接矩阵,编写程序计算:(1)各结点的度数;(2)D中到长度为3的通路的条数;(3)D中到长度为3的回路的条数。
认真完成实验题,能正确运行,提交实验报告并上传程序,实验报告要求写出操作步骤、结果、问题、解决方法、体会等。
2、实验仪器、设备或软件
计算机、VC++6.0、office、相关的操作系统等。
二、实验过程(实验步骤、记录、数据、分析)
实验原理:
设D=<V,E>是一个线图,,则n阶方阵称为D的邻接矩阵。其中:
邻接矩阵具有如下特点:
(1)邻接矩阵是一个布尔矩阵;
(2)无向线图的邻接矩阵是对称的;
(3)而有向线图的邻接矩阵不一定对称;
利用邻接矩阵可以很容易的完成结点的度数计算
写明具体实施的步骤,包括实验过程中的记录、数据和相应的分析
1.先定义两个结构体,一个用来存储邻接矩阵,一个用来存储结点相关信息。
#include <iostream>
#define MAX_LENGTH 100
using namespace std;
typedef struct{
int Matrix[MAX_LENGTH][MAX_LENGTH];
}AdjoinMatrix;
typedef struct{
int in_degree;
int out_degree;
}KnotInfo;
2.根据题意建立邻接矩阵。
void Creat_Matrix(AdjoinMatrix &array, KnotInfo point[],int n){
int i, j;
cout << "分别输入该图的各条边(先输入起点 后输入终点 中间用空格隔开 输入'0'为结束输入):" << endl;
while (true){
cin >> i;
if (i)
{
cin >> j;
array.Matrix[i - 1][j - 1] = 1;
}
else
break;
}
for (i = 0; i < n;i++)
for (j = 0; j < n; j++)
if (array.Matrix[i][j] != 1)
array.Matrix[i][j] = 0;
else
{
point[i].out_degree++;
point[j].in_degree++;
}
}
3.打印出各个节点的出度和入度
void In_degree_Matrix(KnotInfo point[],int n){
for (int i = 0; i < n; i++)
{
cout << "结点v"<<i+1<<"出度为:" << point[i].out_degree << " 入度为:" << point[i].in_degree << endl;
}
cout << endl;
}
4.创建一个函数,用来实现某两个结点距离为3的通路条数计算
int Route_Matrix(AdjoinMatrix &array, int begin, int end,int n){
int h = 0;
for (int i = 0; i < n; i++)
if (array.Matrix[begin][i])
for (int k = 0; k < n; k++)
if (array.Matrix[i][k]&&array.Matrix[k][end])
h+=1;
return h;
}
5.最后打印矩阵和主函数
void Show_Matrix(AdjoinMatrix array,int n){
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << array.Matrix[i][j] << " ";
cout << endl;
}
}
//打印矩阵;
void main(){
int n;
cout << "输入图中所含顶点的个数:" << endl;
cin >> n;
KnotInfo point[MAX_LENGTH];
AdjoinMatrix array;
Creat_Info(point,n);
Creat_Matrix(array,point,n);
cout << "根据题意得出关系矩阵如图:" << endl;
Show_Matrix(array,n);
cout << "从结点v2到结点v4长度为3的通路的条数为:" << Route_Matrix(array, 1, 3,n) <<endl;
cout << "从结点v3到结点v3长度为3的回路的条数为:" << Route_Matrix(array, 2, 2,n) << endl;;
}
三、结论
1、实验结果
根据实验过程中所见到的现象和测得的数据,做出结论
运行结果:
2、分析讨论
对本次实验的心得体会、思考和建议。
本次试验的难度在于对有向图的各个结点的出度和入度的计算,以及求指定路径的条数计算,如果事先清理好思路,用代码实现并不困难。
四、指导教师评语及成绩:
成绩: 指导教师签名:
批阅日期: