CADCAM实验报告
- 格式:doc
- 大小:1.74 MB
- 文档页数:14
二叉树的遍历实验
一、实验名称:二叉树的遍历实验。
二、实验目的:
1、掌握CAD/CAM系统中常用的数据结构二叉树的概念、存储结构以及二叉树遍历技术。
2、熟练应用C语言编写二叉树的建立,以及用先序、中序、后序遍历方法遍历二叉树的程序。
三、实验容
用TC或VC编程,将图2-14所示的二叉树建立链表存储结构,并分别用先序、中序、后序遍历方法遍历该二叉树α
1、程序流程图
2、程序
#include<stdio.h>
#include<malloc.h>
struct btree
{ char data;
struct btree *lchild,*rchild;
}*node[9];
void preorder(struct btree *node) { if(!node) return ;
printf("%c",node->data);
preorder(node->lchild);
preorder(node->rchild);
}
void inorder(struct btree *node) { if(!node) return ;
inorder(node->lchild);
printf("%c",node->data);
inorder(node->rchild);
}
void postorder(struct btree *node) { if(!node) return ;
postorder(node->lchild);
postorder(node->rchild);
printf("%c",node->data);
}
void main()
{
int i;
for(i=0;i<9;i++)
{
node[i]=(struct btree *)malloc(sizeof(struct btree));
node[i]->data='A'+i;
node[i]->lchild=NULL;
node[i]->rchild=NULL;
}
node[0]->lchild=node[1];
node[0]->rchild=node[2];
node[1]->lchild=node[3];
node[2]->lchild=node[4];
node[2]->rchild=node[5];
node[3]->lchild=node[6];
node[3]->rchild=node[7];
node[4]->rchild=node[8];
printf("按先序遍历:");
preorder(node[0]);
printf("\n按中序遍历:");
inorder(node[0]);
printf("\n按后序遍历:");
postorder(node[0]);
getchar();
return 0;
}
实验结果如下:
三、主要仪器设备
计算机(C++语言环境)
实验二数表的程序化处理
一、实验名称:数表的程序化处理
二、实验目的
1、掌握对工程手册和设计规中的各种数据表格(包括数值、数表、线
图)的计算机处理技术。
2、熟练应用C语言或VC金星编程数据处理程序。
三、实验容
用TC或VC编写一个线性插值程序,以下表为基本节点参数,插值计。
算90°-160°围任意角度的包角修正系数K
α
1、程序流程图
2、程序
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
int i,j;
int a[8]={90,100,110,120,130,140,150,160};
double
k[8]={0.68,0.74,0.79,0.83,0.86,0.89,0.92,0.95};
double m;
for(;;)
{
do
{ printf("请输入包角值:(包角围为90°至160°)\n");
scanf("%d",&j);
if(j<90||j>160)
{
printf("包角输入错误,请重新输入。
\n");
printf("按回车键继续查询,按Ctrl+C键退出\n"); getchar();
getchar();
system("cls");
}
}while(j<90||j>160);
for(i=0;i<8;i++)
{
if(j==a[i])
m=k[i];
if(j>a[i]&&j<a[i+1])
m=(k[i+1]*(j-a[i])+k[i]*(a[i+1]-j))/(a[i+1]-a[i]);
}
printf("包角为%d°的包角修正系数为%.3lf\n",j,m);
printf("请按任意键继续查询,按Ctrl+C键退出\n");
getchar();
getchar();
system("cls");
}
}
实验三机械零件三维造型一、实验目的
四、了解三维造型技术的基本原理;
五、熟悉三维造型软件的基本使用方法;
六、掌握用三维造型软件构造三维实体零件的步骤。
二、实验容
用ProE构造支架零件
三、实验报告
1、三维零件模型
2、零件构成过程是CSG树
实验四排料图编程绘制
3、实验目的
七、熟悉AutoCAD中的二次开发工具AutoLISP的各项功能函数;
八、了解AutoLISP的编程过程和方法;
九、掌握在AutoCAD下实现排料图的绘制技术。
4、实验容
已知板材尺寸为L×B,在该板料上气割若干个半径为R的圆板,如果不计割缝,按实验图中排版方式,问用这块板最多可以割下多少块圆板?
编程绘制出排料图。
说明:
1.L=2000,B=1000,R=(班号*10).学号,如2班3号,R=20.03。
2.圆板数用CN变量表示。
3.输出圆板数,并绘制排料图。
5、实验报告
1、画出程序流程图
2、编写程序并调试运行出程序结果
(1)实验程序
(defun c:PL()
(setq L (getreal "\n请输入板料长度L:"))
(setq B (getreal "\n请输入板料厚度B:"))
(setq R 50.17)
(setq CL (fix (/ L (* 2 R))))
(setq CB (fix (/ B (* 2 R))))
(command "zoom" "w" '(0 0) '(L B))
(setq p1 (getpoint "\n输入绘图基点p1"))
(setq p2 (polar p1 (/ pi 2) B))
(setq p3 (polar p2 0 L))
(setq p4 (polar p1 0 L))
(command "pline" p1 p2 p3 p4 "c")
(setq M 0)
(while (< M CB)
(setq ph (polar p1 (/ pi 2) (* R (+ (* M 2) 1))))
(setq pc (polar ph 0 R))
(setq N 0)
(while (< N CL)
(command "circle" pc R)
(setq pc (polar pc 0 (* 2 R)))
(setq N (+ N 1))
)
(setq M (+ M 1))
)
(setq CN (* CL CB))
(prompt (strcat "\n-----圆板数:" (itoa CN) "-----\n")) )
(2)运行结果
输入:L=2000,B=1000
输出NC=171。