数据结构实验报告-显示杨辉三角形
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作过程中问题出现较多,无法输入自己想要的三角形,经过多次询问和求证后方才解决。算法设计和语句编写时存在不少问题,查阅书籍和网络才得以完成实验。
using namespace std;
#include <iomanip>
int Fd(int x, int y)
{
int t = 1;
int k = 1;
for(int i = y; i > x;i--)
{
t = t * i;
t = t / k;
k++;
}
return t;
}
int main()
2.基本要求
⑴设计输出形式,尽量反映杨辉三角的特点。
⑵设计计算杨辉三角形各行数值的方法。
⑶输入:rmax从键盘输入。
⑷输出:屏幕输出杨辉三角形
3.实现提示
⑴存储设计
计算杨辉三角形第i行时,如果在第i-1行两侧各添加一个0,则第i行的第j个元素等于i-1行的第j-1个元素与第j个元素的和。计算如图2.4.4所示。第i行计算完,第i-1行的数据就没有用了,依据第i行数据可计算第i+1行的数据。
{
int nsize;
cout<<"请输入大小"<<endl;
cout<<"提示:按Ctrl+Z两次退出!"<<endl;
while(cin>>nsize)
{
for(int i = 0; i <= nsize; i++)
{
for(int k = 0;k <= nsize; k++)
{
if(k > i)
{
cout<<" ";
}
}
for(int j = 0;j <= i; j++)
{
cout<<setw(3)<<Fd(j,i)<<" ";
}
cout<<endl;
}
cout<<"请输入大小"<<endl;
}
return 0;
}
4.测试与运行
给出行数,从运行结果验证程序设计是否正确。运行截图:
5.思考总结
(2)算法设计
计算各行元素的算法步骤如下。
Step1:队列初始化,0、1入队。队头ftont指向0处,队尾指向1后。
Step2:i从1到rmax,循环执行下列操作,求第i行数据。
2.10入队。
2.2从队首起直到队尾,每出队两元素,求和后入队。
输出时注意0不输出。
(源自文库)
程序设计
#include <iostream>
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…
图2.4.3
杨辉三角形从上述计算中不难看出,第i行的元素从左往右依次可被求得,求解过程中也是从左往右依次使用地i-1行的数据,显然,具有先入先出的特点。所以,可
借助一个队列存放计算过程中所需的数据,如图2.4.5所示。
但随着航数的增加,队列会很长。所以,可以设置一循环队列,队长不少于rmax+2,边计算边出队。
数
据
结
构
课
程
实
验
报
告
班级:计嵌141
姓名:陈志远
学号:1413052023
显示杨辉三角实验报告
1.问题描述
杨辉三角如图2.4.3所示,其特点是两个腰上数值是1,其他位置上的每一个整数都是它的上一行相邻两个整数之和。问题是:对于指定的最大行数rmax,要求从第行到第rmax逐行显示杨辉三角形的所有元素。
using namespace std;
#include <iomanip>
int Fd(int x, int y)
{
int t = 1;
int k = 1;
for(int i = y; i > x;i--)
{
t = t * i;
t = t / k;
k++;
}
return t;
}
int main()
2.基本要求
⑴设计输出形式,尽量反映杨辉三角的特点。
⑵设计计算杨辉三角形各行数值的方法。
⑶输入:rmax从键盘输入。
⑷输出:屏幕输出杨辉三角形
3.实现提示
⑴存储设计
计算杨辉三角形第i行时,如果在第i-1行两侧各添加一个0,则第i行的第j个元素等于i-1行的第j-1个元素与第j个元素的和。计算如图2.4.4所示。第i行计算完,第i-1行的数据就没有用了,依据第i行数据可计算第i+1行的数据。
{
int nsize;
cout<<"请输入大小"<<endl;
cout<<"提示:按Ctrl+Z两次退出!"<<endl;
while(cin>>nsize)
{
for(int i = 0; i <= nsize; i++)
{
for(int k = 0;k <= nsize; k++)
{
if(k > i)
{
cout<<" ";
}
}
for(int j = 0;j <= i; j++)
{
cout<<setw(3)<<Fd(j,i)<<" ";
}
cout<<endl;
}
cout<<"请输入大小"<<endl;
}
return 0;
}
4.测试与运行
给出行数,从运行结果验证程序设计是否正确。运行截图:
5.思考总结
(2)算法设计
计算各行元素的算法步骤如下。
Step1:队列初始化,0、1入队。队头ftont指向0处,队尾指向1后。
Step2:i从1到rmax,循环执行下列操作,求第i行数据。
2.10入队。
2.2从队首起直到队尾,每出队两元素,求和后入队。
输出时注意0不输出。
(源自文库)
程序设计
#include <iostream>
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…
图2.4.3
杨辉三角形从上述计算中不难看出,第i行的元素从左往右依次可被求得,求解过程中也是从左往右依次使用地i-1行的数据,显然,具有先入先出的特点。所以,可
借助一个队列存放计算过程中所需的数据,如图2.4.5所示。
但随着航数的增加,队列会很长。所以,可以设置一循环队列,队长不少于rmax+2,边计算边出队。
数
据
结
构
课
程
实
验
报
告
班级:计嵌141
姓名:陈志远
学号:1413052023
显示杨辉三角实验报告
1.问题描述
杨辉三角如图2.4.3所示,其特点是两个腰上数值是1,其他位置上的每一个整数都是它的上一行相邻两个整数之和。问题是:对于指定的最大行数rmax,要求从第行到第rmax逐行显示杨辉三角形的所有元素。