二相图的实验报告.docx
- 文档编号:25927928
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:6
- 大小:16.83KB
二相图的实验报告.docx
《二相图的实验报告.docx》由会员分享,可在线阅读,更多相关《二相图的实验报告.docx(6页珍藏版)》请在冰豆网上搜索。
二相图的实验报告
竭诚为您提供优质文档/双击可除
二相图的实验报告
篇一:
大学实验报告_实验二非线性结构
(二)——图
xxx大学实验报告
课程名称数据结构实验项目实验二非线性结构
(二)——图
院系信息学院计类系专业班级计类1501姓名学号指导老师日期
批改日期成绩
一实验目的
1.掌握图的邻接矩阵和邻接链表存储结构。
2.掌握图的建立、遍历、最小生成树等典型操作。
二实验内容及要求
实验内容:
(自选一题)
1.建立图的邻接矩阵或邻接链表存储结构,并在对应存储结构上实现图的递归遍历操作。
2.在邻接矩阵存储结构上,完成最小生成树的操作。
实验要求:
1.根据所选题目,用c语言编写程序源代码。
2.源程序须编译调试成功,独立完成。
三实验过程及运行结果#include
#include#definemaxVertexnum100
typedefstruct
{
charvexs[maxVertexnum];
intedges[maxVertexnum][maxVertexnum];
intn,e;
}mgraph;
voidcreatmgraph(mgraph*g)
{
inti,j,k;
chara;
printf("输入顶点数和边数:
");scanf("%d%d",
scanf("%c",
printf("输入顶点:
\n");
for(i=0;in;i++)
{
scanf("%c",
g->vexs[i]=a;
}
for(i=0;in;i++)
for(j=0;jn;j++)
g->edges[i][j]=0;
printf("输入边:
\n");
for(k=0;ke;k++)
{
scanf("%d%d",
g->edges[i][j]=1;
g->edges[j][i]=1;
}
}
typedefenum{FALse,TRue}boolean;
booleanvisited[maxVertexnum];
voidDFsm(mgraph*g,inti)
{
intj;
printf("%c",g->vexs[i]);
visited[i]=TRue;
for(j=0;jn;j++)
if(g->edges[i][j]==1
}
voidDFs(mgraph*g)
{
inti;
for(i=0;in;i++)
visited[i]=FALse;
for(i=0;in;i++)
if(!
visited[i])
DFsm(g,i);
}
voidbFs(mgraph*g,intk)
{
inti,j,f=0,r=0;
intcq[maxVertexnum];
for(i=0;in;i++)
visited[i]=FALse;
for(i=0;in;i++)
cq[i]=-1;
printf("%c",g->vexs[k]);
visited[k]=TRue;
cq[r]=k;
while(cq[f]!
=-1)
{
i=cq[f];f=f+1;
for(j=0;jn;j++)
if(g->edges[i][j]==1
visited[j]=TRue;
r=r+1;cq[r]=j;
}
}
}
intmain()
{
inti;
mgraph*g;
g=(mgraph*)malloc(sizeof(mgraph));
creatmgraph(g);
printf("深度优先遍历为:
");
DFs(g);
printf("\n");
printf("广度优先遍历为:
");
bFs(g,3);
printf("\n");
}
四调试情况、设计技巧及体会
图的遍历操作是从某一顶点出发依次访问图中其余顶点,且每一个顶点仅被遍历一次。
图的遍历有深度优先遍历和广度优先遍历。
进行深度优先遍历的时候应该注意连通图只需要调用一次dfs算法。
广度遍历类似于树的按层次遍历。
篇二:
统计学实验报告(实验一、实验二)
重庆工商大学数学与统计学院课程
实验报告
实验课程:
统计学实验指导教师:
叶勇专业班级:
14信管__学生姓名:
__安琪____学生学号:
20XX033109_____
实验报告
2
3
4
5
篇三:
计算机图形学实验二报告
课
实验学生学
专业指导日
计算机科学与通信工程学院
实验报告
程
计算机图形学
题目曲线拟合
姓名号
班级教师期
成绩评定表
曲线拟合
1.实验内容
1.绘制三次bezier曲线
(1)给定四个已知点p1—p4,以此作为控制顶点绘制一段三次bezier曲线。
(2)给定四个已知点p1—p4,以此作为曲线上的点绘制一段三次bezier曲线。
2.绘制三次b样条曲线
给定六个已知点p1—p6,以此作为控制顶点绘制一条三次b样条曲线。
2.实验环境
软硬件运行环境:
windowsxp开发工具:
visualstudio20XX
3.问题分析
1.绘制三次bezier曲线
bezier曲线是用n+1个顶点(控制点)所构成的n根折线来定义一根n阶曲线。
本次实验中的三次bezier曲线有4个顶点,设它们分别为p0,p1,p2,p3,那么对于曲线上各个点pi(x,y)满足下列关系:
p(t)=[(-p0+3p1-3p2+3p3)t3+(3p0-6p1+3p2)t2+(-3p0+3p2)t+(p0+4p1+p2)]/6x(t)=[(-x0+3x1-3x2+3x3)t3+(3x0-6x1+3x2)t2+(-3x0+3x2)t+(x0+4x1+x2)]/6Y(t)=[(-Y0+3Y1-3Y2+3Y3)t3+(3Y0-6Y1+3Y2)t2+(-3Y0+3Y2)t+(Y0+4Y1+Y2)]/6其中p0、p1、p2、p3为四个已知的点,坐标分别为(x0、Y0)、(x1、Y1)、(x1、Y2)、(x3、Y3)。
所以只要确定控制点的坐标,该曲线可通过编程即可绘制出来。
2.绘制三次b样条曲线
三次b样条函数绘制曲线的光滑连接条件为:
对于6个顶点,取p1、p2、p3、p44个顶点绘制在第一段三次样条曲线,再取p2、p3、p4、p5这4个顶点绘制在第二段三次样条曲线,总计可绘制3段光滑连接的三次样条曲线。
4.算法设计
程序框架//DiamondView.h
classcDiamondView:
publiccView{……
public:
//参数输入和提示对话框
cDlgbezierdlgbezier;//bezier曲线绘制中的参数输入对话框
cDlgbdlgb;//b样条曲线绘制中的参数输入对话框
//绘图函数,需要实现
voidDrawbezier1(poInTp[4]);//已知点作为控制点绘制bezier曲线voidDrawbezier2(poInTp[4]);//已知点作为曲线上的点绘制bezier曲线voidDrawbcurve(poInTp[6]);//绘制b样条曲线//DiamondView.cpp
voidcDiamondView:
:
onmenuDiamond(){
Iscutting=FALse;
if(dlgDiamond.Domodal()==IDoK)
DrawDiamond(dlgDiamond.m_nVertex,dlgDiamond.
m_nRadius,100);//调用绘制金刚石的函数}voidcDiamondView:
:
onmenubezier1(){
Iscutting=FALse;
if(dlgbezier.Domodal()==IDoK)
Drawbezier1(dlgbezier.m_npoint);//调用已知点作为控制点绘制bezier曲线的函数}
//以已知的四个点为控制点绘制bezier曲线//p:
已知的四个控制点
voidcDiamondView:
:
Drawbezier1(poInTp[4]){}
voidcDiamondView:
:
onmenubezier2(){
Iscutting=FALse;
if(dlgbezier.Domodal()==IDoK)
Drawbezier2(dlgbezier.m_npoint);//调用已知点作为曲线上的点绘制bezier曲线
的函数}
//以已知的四个点为bezier曲线上的点来绘制bezier曲线
//p:
已知的四个点
voidcDiamondView:
:
Drawbezier2(poInTp[4]){}
voidcDiamondView:
:
onmenub(){
Iscutting=FALse;
if(dlgb.Domodal()==IDoK)
Drawbcur
ve(dlgb.m_npoint);//调用绘制b样条曲线的函数}
//以已知的六个点为控制点来绘制b样条曲线//p:
已知的六个控制点
voidcDiamondView:
:
Drawbcurve(poInTp[6]){}
5.源代码
//以已知的四个点为控制点绘制bezier曲线//p:
已知的四个控制点
voidcDiamondView:
:
Drawbezier1(poInTp[4]){
cDc*pDc=getDc();
cpennewpen,*oldpen;
newpen.createpen(ps_soLID,2,Rgb(255,0,0));
oldpen=pDc->selectobject(pDc->polyline(p,4);pDc->selectobject(oldpen);newpen.Deleteobject();
newpen.createpen(ps_soLID,2,Rgb(0,0,255));oldpen=pDc->selectobject(intx0=p[0].x;inty0=p[0].y;intx1=p[1].x;inty1=p[1].y;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 相图 实验 报告