课程实验报告

上传人:小** 文档编号:57402440 上传时间:2018-10-21 格式:DOC 页数:24 大小:179.50KB
返回 下载 相关 举报
课程实验报告_第1页
第1页 / 共24页
课程实验报告_第2页
第2页 / 共24页
课程实验报告_第3页
第3页 / 共24页
课程实验报告_第4页
第4页 / 共24页
课程实验报告_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《课程实验报告》由会员分享,可在线阅读,更多相关《课程实验报告(24页珍藏版)》请在金锄头文库上搜索。

1、课程实验报告1实验一 STL 的熟悉与使用实验名称实验一 STL 的熟悉与使用姓 名汪子成系院专业信息工程系班 级计算机 15-1 班学 号2015216758实验日期指导教师徐本柱成 绩一、实验目的和要求一、实验目的和要求 1掌握 C+中 STL 的容器类的使用; 2掌握 C+中 STL 的算法类的使用.二、实验预习内容二、实验预习内容 1预习 ICPC 讲义,大致了解 STL 的相关内容。 2了解 STL 中一些类 vector list 类的使用方法 3了解泛型算法的使用三、实验项目摘要三、实验项目摘要 (1) 练习 vector 和 list 的使用。定义一个空的 vector,元素类

2、型为 int,生成 10 个随机数插入到 vector 中,用迭代器遍历 vector 并输出其中的元素值。在 vector 头部插入一个随机数,用迭代 器遍历 vector 并输出其中的元素值。用泛型算法 find 查找某个随机数,如果找到便输出,否则 将此数插入 vector 尾部。用泛型算法 sort 将 vector 排序,用迭代器遍历 vector 并输出其中的 元素值。删除 vector 尾部的元素,用迭代器遍历 vector 并输出其中的元素值。将 vector 清空。 定义一个 list,并重复上述实验,并注意观察结果。 (2) 练习泛型算法的使用。定义一个 vector,元素

3、类型为 int,插入 10 个随机数,使用 sort 按升序 排序,输出每个元素的值,再按降叙排序,输出每个元素的值。练习用 find 查找元素。用 min 和 max 找出容器中的最小元素和最大元素,并输出。课程实验报告2四、实验结果与分析(源程序及相关说明)四、实验结果与分析(源程序及相关说明) 1. 练习vector 和list 的使用:#include #include #include#include #include using namespace std;vector myV;bool sortup(int v1,int v2)return v1:iterator it1;for

4、 (it1=myV.begin();it1!=myV.end();it1+)coutmax)max=(*it1);cout#includeusing namespace std;typedef list lin;int value=1,6,7,8,9; void print(lin lin:iterator lit;for(lit=l.begin();lit!=l.end();lit+)coutv2; int main()lin lin2; lin2.push_front(3); lin2.push_front(4); lin2.insert(lin2.begin(),value,value+

5、5);cout#define N 8#define NUM 8int hNN,nN,HNN;int count=0;void tryit(int,int);void outputArray(intN);main()int x=0,y=0,i,j;for(i=0;i=0i=0)tryit(x-1,nx-1+1);elsetryit(0,0);elsetryit(x,y+1);void outputArray(int hN)int i,j;for(i=0;i int board88 = 0; int travel(int x, int y) int ktmove18 = -2, -1, 1, 2,

6、 2, 1, -1, -2; int ktmove28 = 1, 2, 2, 1, -1, -2, -2, -1; int nexti8 = 0; int nextj8 = 0; int exists8 = 0; int i, j, k, m, l; int tmpi, tmpj; int count, min, tmp; i = x;j = y; 课程实验报告19boardij = 1; for(m = 2; m 7 | tmpj 7) continue; if(boardtmpitmpj = 0) nextil = tmpi; nextjl = tmpj; l+; count = l; i

7、f(count = 0) return 0; else if(count = 1) min = 0; else for(l = 0; l 7 | tmpj 7) continue; 课程实验报告20 if(boardtmpitmpj = 0) existsl+; tmp = exists0; min = 0; for(l = 1; l 0。当( p1 p3 ) ( p4p3 ) = 0 时,说明( p1 p3 ) 和 ( p4 p3 )共线,但是因为已经通过快速排斥试验,所以 p1 一定在线段 p3p4 上;同理,( p4 p3 ) (p2 p3 ) = 0 说明 p2 一定在 p3p4 上。

8、所以判断 p1p2 跨立 Q1Q2 的依据是:( p1 p3 ) ( p4 p3 ) * ( p4 p3 ) ( p2p3 ) = 0。同理判断 Q1Q2 跨立 P1P2 的依据是:( p3 - p1 ) ( p2 - p1 ) * ( p2 - p1 ) ( p4 - p1 ) = 0。代码中函数 bool segment_intersect()用于判断 p1、p2 构成的线段和 p3、p4 构成的线段是否相交。可以看 出共五种情况两线段是相交的,反之就输出“The two are Not intersected!”4.房间最短路问题:#include #include #include #

9、include using namespace std; typedef pair POINT;double direction(POINT p,POINT p1,POINT p2) POINT v1,v2; v1.first=p2.first-p1.first; v1.second=p2.second-p1.first; v2.first=p1.first-p.first; v2.second=p1.second-p.second; return v1.first*v2.second-v1.second*v2.second; bool on_segment(POINT p,POINT p1,

10、POINT p2) double min_x=p1.firstp2.first?p1.first:p2.first; 课程实验报告24double min_y=p1.secondp2.second?p1.second:p2.second; if(p.first=min_xif(d=0 if(d= =0 return false; void find_convex_hull(vector int k=0; for(int i=0;iconvex_hull; 课程实验报告10doconvex_hull.push_back(point0); startPoint=point0; point.eras

11、e(point.begin(); sort(point.begin(),point.end(),sortByPolorAngle);if(point0=convex_hull0)break; point.push_back(convex_hullconvex_hull.size()-1); while(1); for(int j=0;j pv; double x,y; int i; cout:“xy;pv.push_back(make_pair(x,y);cout#includeusing namespace std;void longest(string s1,string s2)int max,tep,i,j;int a100100;for(i=0;is1;couts2;longest(s1,s2); cout#includeusing namespace std;int min(int x1,int x2, int x3)课程实验报告10if(x2s1;cout s2;change(s1,s2);coutendl; return 0;课程实验报告10

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号