合工大 程序设计与艺术 实验三
合肥工业大学宣城校区:程序设计基础--周波:实验十仅供参考
实验十1 实验目的:掌握面向对象编程中继承、派生的用法。
2 实验题目:(1)编写一个集合类,要求类的每个对象可以保存0~100个不同的整数,并使用友元函数实现如下功能:①从集合中加入一个整数②从集合中去掉一个整数③判断一个整数是否在集合中④求两个集合的并集,结果是一个集合⑤求两个集合的交集,结果是一个集合(2)下面是一个形状类Shape,编写Shape的派生类:圆类Circle、三角形类Triangle和矩形类Rectangle,并重定义基类的成员函数使之返回正确的结果(show函数要输出对象的基本信息),然后编写程序进行测试。
class Shape{public:double area(){return 0;};double girth(){return 0;};void show(){cout<<”Shape Object”<<endl;};private:};(3)编写一个笔类,描述所有笔的共同属性,然后编写笔类的派生类:钢笔、铅笔、签字笔、毛笔,在各派生类中尽量描述清楚各自的属性。
(4)自学完成:定义复数类,重载“+”“-”“=”运算符。
3 实验结果截图图片1 题目(1)程序运行截图图片2 题目(2)程序运行截图图片3 题目(3)程序运行截图图片4 题目(4)程序运行截图4 源代码//题目(1)源代码://_set.h#ifndef _SET_H_INCLUDED#define _SET_H_INCLUDED#include <iostream>#include <cstdio>#include <windows.h>class _set{friend _add(_set &,int);friend _del(_set &,int);friend bool _judge(_set &,int);//friend _set &_union(_set &,_set &);//求并集//friend _set &_intersection(_set &,_set &); friend _set _union(_set &,_set &);//求并集friend _set _intersection(_set &,_set &);//求交集public:_set(int);_set();~_set();display(_set &);private:int*p;int _size;//size of number};#endif // _SET_H_INCLUDED// _set.cpp: implementation of the _set class./////////////////////////////////////////////////// /////////////////////#include "_set.h"///////////////////////////////////////////////// /////////////////////// Construction/Destruction///////////////////////////////////////////////// /////////////////////_set::_set(){}_add(_set &s,int n){s.p[s._size++]=n;}_del(_set &s,int n){printf("After deleted %d,the elements of the operated set include:\n",n);int index;for(int i=0;i<s._size;i++)if(s.p[i]==n)index=i;for(int j=index;j<s._size;j++){s.p[j]=s.p[j+1];}s._size--;}bool _judge(_set &s,int n){for(int i=0;i<s._size;i++)if(s.p[i]==n){printf("%d is in the operated set.\n",n);return true;}printf("%d is not in the operated set.\n",n);return false;}_set _union(_set &s1,_set &s2)//求并集//_set _union(_set &s1,_set &s2)//求并集{_set s3(s1._size+s2._size);for(int i=0;i<s1._size;i++)s3.p[s3._size++]=s1.p[i];for(int j=0;j<s2._size;j++){int index=0;for(;index<s2._size;index++)if(s3.p[index]==s2.p[j])//continue;break;if(index==s1._size){s3.p[s3._size++]=s2.p[j];}}std::cout<<"The union of sets:"<<std::endl;return s3;}_set _intersection(_set &s1,_set &s2)//_set _intersection(_set &s1,_set &s2) {_set s3(s1._size+s2._size);int bigger;if(s1._size>s2._size)bigger=s1._size;elsebigger=s2._size;for(int i=0;i<bigger;i++){for(int j=0;j<bigger;j++){if(s1.p[i]==s2.p[j])s3.p[s3._size++]=s1.p[i];}}std::cout<<"The intersection of sets:"<<std::endl;return s3;}_set::~_set(){delete[]p;std::cout<<"The destruction has been called"<<std::endl;}_set::_set(int n){p=new int[n];_size=0;}_set::display(_set &s){for(int i=0;i<s._size;i++){std::cout<<s.p[i]<<" ";if((i+1)%4==0)std::cout<<std::endl;}}//test.cpp#include "_set.h"int main()//测了几次感觉没毛病{int n;std::cin>>n;_set s1(n),s2(n);for(int i=0;i<n;i++){_add(s1,i);_add(s2,i+3);}std::cout<<"s1:\n";s1.display(s1);std::cout<<std::endl;std::cout<<std::endl;std::cout<<"s2:\n";s2.display(s2);std::cout<<"\n\n";_set s3=_union(s1,s2);s3.display(s3);std::cout<<"\n\n";_set s4=_intersection(s1,s2);s4.display(s4);std::cout<<"\n\n";_del(s1,8);s1.display(s1);std::cout<<"\n\n";_judge(s1,8);std::cout<<"\n";_judge(s2,5);std::cout<<"The screen will be closed in 60s."<<std::endl;Sleep(1000*60);return0;}//题目(2)源代码://Shape.h#ifndef SHAPE_H_INCLUDED#define SHAPE_H_INCLUDED#include <iostream>//#include <windows.h>class Shape{public:Shape();virtual~Shape();double area(){return0;};double girth(){return0;};virtual void show(){ std::cout<<"Shape Object"<<std::endl;};protected:double _girth,_area;};#endif // SHAPE_H_INCLUDED// Shape.cpp: implementation of the Shape class. /////////////////////////////////////////////////// /////////////////////#include "Shape.h"///////////////////////////////////////////////// /////////////////////// Construction/Destruction///////////////////////////////////////////////// /////////////////////Shape::Shape(){}Shape::~Shape(){}//Circle.h#ifndef CIRCLE_H_INCLUDED#define CIRCLE_H_INCLUDED#include "Shape.h"#define pi 3.1415926class Circle:public Shape{public:Circle();Circle(double);virtual~Circle();double area();double girth();void show();private:double r;};#endif // CIRCLE_H_INCLUDED// ircle.cpp: implementation of the Circle class. /////////////////////////////////////////////////// /////////////////////#include "Circle.h"///////////////////////////////////////////////// /////////////////////// Construction/Destruction///////////////////////////////////////////////// /////////////////////Circle::Circle(){}Circle::Circle(double R){r=R;}Circle::~Circle(){std::cout<<"The circle destruction has been called."<<std::endl;}double Circle::area(){//_area=pi*r*r;return pi*r*r;}void Circle::show(){_area=area();_girth=girth();std::cout<<"It is a circle object."<<std::endl;std::cout<<"The radius of the circle is"<<r<<std::endl;std::cout<<"The area of the circle is"<<_area<<std::endl;std::cout<<"The girth of circle is "<<_girth<<std::endl;}double Circle::girth(){//_girth=2*pi*r;return2*pi*r;}//Rectangle.h#ifndef RECTANGLE_H_INCLUDED#define RECTANGLE_H_INCLUDED//#include <windows.h>#include "Shape.h"class Rectangle:public Shape{public:Rectangle();Rectangle(double,double);~Rectangle();double area();double girth();void show();private:double length,width;};#endif // RECTANGLE_H_INCLUDED//Rectangle.cpp#include "Rectangle.h"Rectangle::Rectangle(){}Rectangle::Rectangle(double _a,double _b) {length=_a;width=_b;}Rectangle::~Rectangle(){std::cout<<"The rectangle destruction has been called."<<std::endl;}void Rectangle::show(){_girth=girth();_area=area();std::cout<<"It is a rectangleobject."<<std::endl;std::cout<<"The length and width of the rectangle are "<<length<<" "<<width<<std::endl;std::cout<<"The area of the rectangle is"<<_area<<std::endl;std::cout<<"The girth of the rectangle is"<<_girth<<std::endl;}double Rectangle::area(){return length*width;}double Rectangle::girth(){return2*(length+width);}//Triangle.h#ifndef TRIANGLE_H_INCLUDED#define TRIANGLE_H_INCLUDED#include "Shape.h"#include <cmath>//#include <windows.h>class Triangle:public Shape{public:Triangle();Triangle(double,double,double);virtual~Triangle();double area();double girth();void show();bool judge();private:double _side1,_side2,_side3;};#endif // TRIANGLE_H_INCLUDED// Triangle.cpp: implementation of the Triangle class./////////////////////////////////////////////////// /////////////////////#include "Triangle.h"#include <math.h>///////////////////////////////////////////////// /////////////////////// Construction/Destruction///////////////////////////////////////////////// /////////////////////Triangle::Triangle(){}Triangle::Triangle(double _a,double _b,double _c) {_side1=_a;_side2=_b;_side3=_c;}Triangle::~Triangle(){std::cout<<"The triangle destruction has been called."<<std::endl;}double Triangle::area(){if(judge()){double s=0.0,l=(_side1+_side2+_side3)/2;s=sqrt(l*(l-_side1)*(l-_side2)*(l-_side3));return s;}return0.0;}double Triangle::girth(){if(judge())return _side1+_side2+_side3;return0.0;}void Triangle::show(){if(judge()){_area=area();_girth=girth();std::cout<<"It is a triangleobject."<<std::endl;std::cout<<"The three sides of the triangle are "<<_side1<<" "<<_side2<<" "<<_side3<<""<<std::endl;std::cout<<"The area of the triangle is"<<_area<<std::endl;std::cout<<"The girth of triangle is"<<_girth<<std::endl;}elsestd::cout<<"It is not a lawfultriangle."<<std::endl;}bool Triangle::judge(){//abc acb bac bca cab cbaif(_side1+_side2>_side3 &&_side1+_side3>_side2 && _side2+_side1>_side3 && _side2+_side3>_side1 && _side3+_side1>_side2 &&_side3+_side2>_side1)return true;return false;}//test.cpp#include "Circle.h"#include "Triangle.h"#include "Rectangle.h"/*为什么不能在main.cpp或者其他的的头文件中添加<windows.h>,否则第28到第31行(Rectangle 相关的)会报错?*/int main(){Circle c1(1.0);c1.show();std::cout<<std::endl;Triangle t1(1.0,2.0,3.0);t1.show();std::cout<<std::endl;Triangle t2(10.0,3.0,8.0);t2.show();std::cout<<std::endl;std::cout<<std::endl;Triangle t3(3.0,4.0,5.0);t3.show();std::cout<<std::endl;Rectangle r1(1.0,2.0),r2(3.0,5.0);r1.show();std::cout<<std::endl;r2.show();std::cout<<std::endl;//std::cout<<"The screen will be closed in 60s."<<std::endl;//Sleep(1000*60);return0;}//题目(3)源代码://writing_instruments.h#ifndef WRITING_INSTRUMENTS_H_INCLUDED#define WRITING_INSTRUMENTS_H_INCLUDED #include <iostream>#include <string>#include <windows.h>class writing_instruments{protected:double price;bool used_in_exam;bool me_owned_;double service_span;std::string place_of_origin;int num;public:writing_instruments();writing_instruments(int);virtual~writing_instruments();virtual voidshow(){std::cout<<"..."<<std::endl;} virtual void add(int);virtual void _minus(int);};#endif // WRITING_INSTRUMENTS_H_INCLUDED//writing_instruments.cpp#include "writing_instruments.h"writing_instruments::writing_instruments(){price=0.0;used_in_exam=false;me_owned_=false;service_span=0.0;place_of_origin="xxxxxxxxxxxxxxxxx";num=0;}writing_instruments::~writing_instruments(){std::cout<<"The writing_instruments destructor has been called."<<std::endl;}writing_instruments::writing_instruments(int n) {price=0.0;used_in_exam=false;me_owned_=false;service_span=0.0;place_of_origin="xxxxxxxxxxxxxxxxx";num=n;}void writing_instruments::add(int n){num+=n;}void writing_instruments::_minus(int n){num-=n;}//pen.h#ifndef PEN_H_INCLUDED#define PEN_H_INCLUDED#include "writing_instruments.h"class pen:public writing_instruments{private:std::string nib;std::string colour;//enumcolour{Red,Orange,Yellow,Green,Blue,Indigo,Violet };std::string kind;public:pen(int,std::string,std::string);virtual~pen();void show();void add(int);void _minus(int);};#endif // PEN_H_INCLUDED//pen.cpp#include "pen.h"pen::pen(int n,std::string _colour,std::string _nib){price=10;nib=_nib;num=n;colour=_colour;price=100.0;used_in_exam=true;me_owned_=true;service_span=10.0;place_of_origin="China";}pen::~pen(){std::cout<<"The pen destructor has been called."<<std::endl;}void pen::add(int n){num+=10*n;}void pen::_minus(int n){num-=100*(-n);}void pen::show(){add(10);_minus(20);std::cout<<"It is a pen object."<<std::endl; std::cout<<"Here are "<<num<<" pen"<<"."<<std::endl;std::cout<<"The nib of the pen is"<<nib<<"."<<std::endl;std::cout<<"The colour of the pen is"<<colour<<"."<<std::endl;std::cout<<"The kind of the pen is"<<kind<<"."<<std::endl;std::cout<<"The price of the pen is"<<price<<"."<<std::endl;std::cout<<"The pen can serve you for "<<service_span<<" years."<<std::endl;std::cout<<"The pen was made in"<<place_of_origin<<"."<<std::endl;std::cout<<"You can use it in examination"<<"."<<std::endl;std::cout<<"Some pens owned."<<std::endl; }//pencil.h#ifndef PENCIL_H_INCLUDED#define PENCIL_H_INCLUDED#include "writing_instruments.h"class pencil:public writing_instruments{private:std::string colour;std::string apply_to;std::string XB;public:pencil(int,std::string,std::string);virtual~pencil();void show();void add(int);void _minus(int);};#endif // PENCIL_H_INCLUDED//pencil.cpp#include "pencil.h"pencil::pencil(int n,std::string_colour,std::string _XB){price=10;num=n;colour=_colour;XB=_XB;price=1.0;used_in_exam=true;me_owned_=true;service_span=0.3;place_of_origin="China";apply_to="students&&workmen&&white_collar&&etc"; }pencil::~pencil(){std::cout<<"The pencil destructor has been called."<<std::endl;}void pencil::add(int n){num+=120*n;}void pencil::_minus(int n){num-=100*(-2*n);}void pencil::show(){add(10);_minus(20);std::cout<<"It is a pencil object."<<std::endl; std::cout<<"Here are "<<num<<" pencils"<<"."<<std::endl;std::cout<<"The colour of the pencil is"<<colour<<"."<<std::endl;std::cout<<"The price of the pencil is"<<price<<" yuan."<<std::endl;std::cout<<"The pencil can serve you for"<<service_span<<" years."<<std::endl;std::cout<<"The pencil was made in"<<place_of_origin<<"."<<std::endl;std::cout<<"You can use it inexamination"<<"."<<std::endl;std::cout<<"Some pencils owned."<<std::endl;}//sign_pen.h#ifndef SIGN_PEN_H_INCLUDED#define SIGN_PEN_H_INCLUDED#include "writing_instruments.h"class sign_pen:public writing_instruments {private:std::string colour;std::string apply_to;double nib_diameter;public:sign_pen(int,double,std::string);virtual~sign_pen();void show();void add(int);void _minus(int);};#endif // SIGN_PEN_H_INCLUDED//sign_pen.cpp#include "sign_pen.h"sign_pen::sign_pen(int n,double_nib_diameter,std::string _colour){nib_diameter=_nib_diameter;price=10;num=n;colour=_colour;price=1.0;used_in_exam=true;me_owned_=true;service_span=2.0;place_of_origin="China";apply_to="students&&workmen&&white_collar&&etc"; }sign_pen::~sign_pen(){std::cout<<"The sign_pen destructor has been called."<<std::endl;}void sign_pen::add(int n){num+=n*n+2;}void sign_pen::_minus(int n){num-=(n*n)/2;}void sign_pen::show(){add(109);_minus(20);std::cout<<"It is a sign_penobject."<<std::endl;std::cout<<"Here are "<<num<<" sign pens"<<"."<<std::endl;std::cout<<"The colour of the sign pen is "<<colour<<"."<<std::endl;std::cout<<"The price of the sign pen is"<<price<<" yuan."<<std::endl;std::cout<<"The diameter of the sign pen nib"<<nib_diameter<<" mm."<<std::endl;std::cout<<"The sign pen can serve you for "<<service_span<<" years."<<std::endl;std::cout<<"The sign pen was made in"<<place_of_origin<<"."<<std::endl;std::cout<<"You can use it inexamination"<<"."<<std::endl;std::cout<<"Some sign pens owned."<<std::endl; }//writing_brushes.h#ifndef WRITING_BRUSHES_H_INCLUDED#define WRITING_BRUSHES_H_INCLUDED#include "writing_instruments.h"#include <cmath>class writing_brushes:public writing_instruments {private:std::string property;std::string person_apply_to;std::string apply_to_what;std::string colour;public:writing_brushes(int,std::string,std::string,std:: string);virtual~writing_brushes();void show();void add(int);void _minus(int);};#endif // WRITING_BRUSHES_H_INCLUDED//writing_brushes.cpp#include "writing_brushes.h"writing_brushes::writing_brushes(int n,std::string _colour,std::string _property,std::string_apply_to_what){price=10;property=_property;num=n;colour=_colour;price=255.0;used_in_exam=false;me_owned_=false;service_span=2.0;place_of_origin="China";person_apply_to="students&&workmen&&white_collar& &etc";apply_to_what=_apply_to_what;}writing_brushes::~writing_brushes(){std::cout<<"The writing_brushes destructor has been called."<<std::endl;}void writing_brushes::add(int n){num+=sqrt(n)*20-1;}void writing_brushes::_minus(int n){num-=n*sqrt(n)+2;}void writing_brushes::show(){add(109);_minus(19);std::cout<<"It is a writing_brushesobject."<<std::endl;std::cout<<"Here are "<<num<<" writing brushes "<<"."<<std::endl;std::cout<<"The colour of the writing brush is "<<colour<<"."<<std::endl;std::cout<<"The price of the writing brush is "<<price<<" yuan."<<std::endl;std::cout<<"This kind of brush is suitable for "<<apply_to_what<<"."<<std::endl;std::cout<<"This property of writing brush is "<<property<<"."<<std::endl;std::cout<<"The writing brush can serve you for"<<service_span<<" years."<<std::endl;std::cout<<"The writing brush was made in "<<place_of_origin<<"."<<std::endl;std::cout<<"Generally You can't use it in examination"<<"."<<std::endl;std::cout<<"No writing brushowned."<<std::endl;}//test.cpp#include "pen.h"#include "pencil.h"#include "sign_pen.h"#include "writing_brushes.h"int main(){pen p1(10,"Black","Steel");p1.show();std::cout<<std::endl;pencil pc1(100,"Red","2B");pc1.show();std::cout<<std::endl;sign_pen sgp1(20,0.5,"Purple");sgp1.show();std::cout<<std::endl;writing_brusheswb1(25,"Black","hard","drawing");wb1.show();std::cout<<std::endl;std::cout<<"The screen will be closed in 60s."<<std::endl;Sleep(1000*60);return0;}//题目(3)源代码://_complex_number.h#ifndef _COMPLEX_NUMBER_H_INCLUDED#define _COMPLEX_NUMBER_H_INCLUDED#include <iostream>#include <cmath>class _complex_number{private:double re;double im;public:_complex_number();_complex_number(double,double);~_complex_number();void display(_complex_number &);_complex_number operator+(_complex_number &)const;_complex_number operator-(_complex_number &)const;//_complex_number operator=(_complex_number &);//为什么这里用引用做参数就不行呢?_complex_number operator=(_complex_number ); };#endif // _COMPLEX_NUMBER_H_INCLUDED//_complex_number.cpp#include "_complex_number.h"_complex_number::_complex_number(){}_complex_number::_complex_number(double_re,double _im){re=_re;im=_im;}_complex_number::~_complex_number(){std::cout<<"The destructor has been called."<<std::endl;}/*注意,在运算符表示法中,运算符左侧的对象是调用对象,运算符右边的对象是作为参数被传递的对象。
合肥工业大学电子线路CAD实验报告
综合实验报告二〇一一~ 二〇一二学年第三学期学院电气与自动化工程学院实验名称电子线路CAD专业班级自动化5班学号20101873学生姓名汤瑞指导教师李鑫、林逸榕成绩实验2 Protel 99SE原理图设计图2.1 PS/2键盘接口电路图2.2 直流/交流转换电路图2.3 部分人机界面接口电路图2.4 手动/自动触发信号产生电路图2.5 系统电源电路图2.6 信号复现模块电路实验3 Protel 99SE原理图编辑图3.1 7段LED数码管库元件图3.2 变压器库元件图3.2 变压器库元件图3.4 计数器库元件图3.5 运算单元库元件实验4 Protel 99SE原理图设计的电路测试与报表输出图4.1 单片机最小系统Error Report For : Documents\单片机最小系统.Sch 13-Jul-2012 09:29:48 #1 Warning IO Pins And Output Pins On Net AD0IO Pins : 单片机最小系统.Sch(U1-39 @140,550)Output Pins : 单片机最小系统.Sch(U3-11 @840,530)#2 Warning IO Pins And Output Pins On Net AD1IO Pins : 单片机最小系统.Sch(U1-38 @140,540)Output Pins : 单片机最小系统.Sch(U3-12 @840,520)#3 Warning IO Pins And Output Pins On Net AD2IO Pins : 单片机最小系统.Sch(U1-37 @140,530)Output Pins : 单片机最小系统.Sch(U3-13 @840,510)#4 Warning IO Pins And Output Pins On Net AD3IO Pins : 单片机最小系统.Sch(U1-36 @140,520)Output Pins : 单片机最小系统.Sch(U3-15 @840,500)#5 Warning IO Pins And Output Pins On Net AD4IO Pins : 单片机最小系统.Sch(U1-35 @140,510)Output Pins : 单片机最小系统.Sch(U3-16 @840,490)#6 Warning IO Pins And Output Pins On Net AD5IO Pins : 单片机最小系统.Sch(U1-34 @140,500)Output Pins : 单片机最小系统.Sch(U3-17 @840,480)#7 Warning IO Pins And Output Pins On Net AD6IO Pins : 单片机最小系统.Sch(U1-33 @140,490)Output Pins : 单片机最小系统.Sch(U3-18 @840,470)#8 Warning IO Pins And Output Pins On Net AD7IO Pins : 单片机最小系统.Sch(U1-32 @140,480)Output Pins : 单片机最小系统.Sch(U3-19 @840,460)End Report图4.2 电气法则测试结果图4.3 由原理图生成的网络表图4.4 Protel Format格式的元件列表图4.5 元件引脚列表实验5 PCB印制电路板设计图5.1 电平转换电路原理图图5.2 元件PCB图。
合工大.net程序设计与系统开发实验报告
《.NET程序设计与系统开发》课程实验报告姓名(学号)分工成绩实验时间2016实验地点专业电子商务13-01班所在学院管理学院指导老师一、实验目的实验一:C#语法基础实验配合课程教学,通过实际上机练习,熟练掌握和运用C#基本语法,能运用它进行控制台应用程序设计;熟悉VISUAL 开发平台;熟悉控制台应用程序的调试经验和技巧。
实验二:C#语法高级实验进一步熟悉和掌握C#语言,增强程序调试经验和技巧;锻炼综合运用所学知识能力,能设计和解决适当问题。
二、实验要求实验一:C#语法基础实验实现实验内容提要中规定的各项需求;独立(或合作或在别人协助下或老师指导下)创造性地完成实验,严禁抄袭;实验结束,提交实验报告。
基于VISUAL 平台开展实验,学会如何建立控制台应用的项目工程。
掌握以下语法知识:(1)数据类型;(2)运算符、表达式、语句;(3)数组、字符串、迭代器;(4)异常处理与预处理指令;(5)类与接口;(6)事件与委托。
实验二:C#语法高级实验实现实验内容提要中规定的各项需求;独立(或合作或在别人协助下或老师指导下)创造性地完成实验,严禁抄袭;实验结束,提交实验报告。
所建工程类型可以为:控制台应用、windows窗体应用、 web应用。
三、实验内容实验一:C#语法基础实验任务1 判断每个输入的数是否可被3,5和7整除,并将整除状态输出。
要求:(1) 掌握VISUAL C#.NET 的基本调试技巧。
演示调试情况,会跟踪变量的值,会设置和取消断点,会跟踪如何进入函数内部(2) 对每个输入数,分别输出对3,5和7的整除状态; (3) 能实现多次输入输出,最好能有一些输入提示; (4) 亦可同时输入和处理多个数,并输出多个数的整除状态。
(5) 考虑使用switch 或if 。
任务2 练习使用for 、while 、do while 、foreach in 等循环语句。
要求:(1) 上述循环语句至少使用1次; (2) 至少有1题采用了string 类实现; (3) 至少有1题采用了集合类实现; 任务3 绘图输出y=a*sin(c*x + b)输出字符三角形A AAA AAAAA AAAAAAA AAAAAAAAAB BBB BBBBB 输出字符菱形A AAA AAAAA AAAAAAA AAAAAAAAA AAAAAAA AAAAA AAA AB BBB BBBBB BBB B输出背靠背字符三角形W W WW WW WWW WWW WWWW WWWW B B BB BB BBB BBB输出交替字符倒三角形STSTS STS SSTSTSTSTSTSTSTSTSTS STSTSTSTSTSTSTSTS STSTSTSTSTSTSTS STSTSTSTSTSTS STSTSTSTSTS STSTSTSTS STSTSTS STSTS STS S要求:(1)系数a, b和c是可以变化的,可考虑是从键盘输入的,或通过Main方法参数传递的;(2)x的取值范围在0~4π之间,x,y值采用四舍五入;提示:根据输入参数,先生成一组数据(x, y),可考虑循环生成,四舍五入;在相应位置输出*或#。
大学计算机实验三(合工大)
0603 0038
0403 0060
0403 00C0
0803 0380
1003 0600
3003 0C00
0000 3000
0000 C000
隶书
0008 0000
0006 0000
0001 C000
0000 C000
0000 C000
0400 800C
07FF FFFE
0C00 001C
0006 0000
0001 C000
0000 C000
0000 C000
0400 800C
07FF FFFE
0C00 001C
0C00 0010
1C00 0020
3800 01C0
01FF FFC0
0000 0380
0000 0700
0000 0C00
0000 1800
0000 6000
0000 6004
0000 703C
1FFF 8030
0183 0060
0183 00C0
0183 0180
0183 0100
0183 0200
0183 0400
0183 0804
0183 201E
0183 701C
3FFF F838
0183 0060
0183 00C0
0183 0180
0183 0300
0303 0400
0303 1806
0303 2007
0303 000E
0603 001C
0603 0038
0403 0060
0403 00C0
0803 0380
1003 0600
合工大 程序设计艺术与方法 实验二
《程序设计艺术与方法》课程实验报告}void print() //打印输出N皇后的一组解{int i, j;for (i = 0; i < n; ++i){for (j = 0; j < n; ++j){if (Cheekerboard[i] != j) //a[i]为初始值cout << ".\t";else//a[i]表示在第i行的第a[i]列可以放置皇后cout << "*\t";}cout << endl;}//输出放置位置cout << "结果位置:";for (i = 0; i < n; ++i)cout << "(" << i+1 << "," << Cheekerboard[i]+1 << ") ";cout << endl;cout << "--------------------------------" << endl;}int Queen(int i){int a = 0, b = 0;while (a < n){while (b < n){if (place(a,b)){Cheekerboard[a] = b;b = 0;break;}else{b++;}}if (b == n)//未找到合适的点{//结束循环,找到所有可能if (a == 0)break;else{//回到上一行a--;b = Cheekerboard[a] + 1;continue;}}if (a == n - 1){//找到一种解法sum++;//cout << "解法" << sum << ":" << endl;//print();a--;b = Cheekerboard[a] + 1;continue;}a++;}return sum;}int_tmain(int argc, _TCHAR* argv[]){time_t tm;int t;while (n > 0){cout << "输入皇后个数:(输入0结束循环):" << endl;cin >> n;//tm = time(0);t = Queen(n);if (n == 0) //如果n=0,则可行解个数为0,这种情况一定不要忽略t = 0;cout << "可行解的个数为:" << t << endl;sum = 0;//printf("计算时间%d秒 \n", (int)(time(0) - tm));}return 0;3.骑士游历问题使用贪心算法,使用二维数组表示棋盘,定义一个全局变量step=1,从指定点开始,寻找出口数最少的方向,跳转int x;int y;};point path[64] = { 0 };//找到出口最少的点返回bool Minpoint(int x, int y , point &seat){int min = 9;int count = 0;int k;for (int i = 0; i < 8; i++){if (!is_visit[x - 1][y - 1][i])if ((x + seatx[i]) >0 && (y + seaty[i]) > 0 && (x + seatx[i]) < 9 && (y + seaty[i]) < 9){if (Checkerboard[x - 1 + seatx[i]][y - 1 + seaty[i]] == 0){count = 0;for (int j = 0; j < 8; j++){if ((x + seatx[i] + seatx[j]) >0 && (y + seaty[i] + seaty[j]) > 0 && (x + seatx[i] + seatx[j]) < 8 && (y + seaty[i] + seaty[j]) < 8){if (Checkerboard[x - 1 + seatx[i] + seatx[j]][y - 1 + seaty[i] + +seaty[j]] == 0)count++;}}if (count < min){min = count;seat.x = x + seatx[i];seat.y = y + seaty[i];k = i;}}}}if (min == 9)return false;else{is_visit[x - 1][y - 1][k] = 1;return true;}}void OutPath(){cout << "输出一条可能路径结果:" << endl;int j = 0;for (int i = 0; i < 64; i++){cout << "(" << path[i].x << "," << path[i].y << ")" << "->";if (j < 9)j++;else{j = 0;cout << endl;}}cout << "END" << endl;system("pause");}void findPath(int x, int y){path[0].x = x;path[0].y = y;Checkerboard[x - 1][y - 1] = 1;while (true){if (Minpoint(path[step - 1].x, path[step - 1].y, path[step])){Checkerboard[path[step].x - 1][path[step].y - 1] = 1;step++;}else if (step == 64)break;else{step--;Checkerboard[path[step].x - 1][path[step].y - 1] = 0;for (int i = 0; i<8; i++) //把这个位置的所有可以动的方向重新置为未访问过首先使用欧几里得扩展算法判断输入的升数是否有解,并且所求升数,是否小于等于两容器体积之和,如果都成立,则输出过程,否则,就输出No Solution;过程如下:如果A=L,装满A,如果B=L,装满B,如果L==A+B,装满A,B;如果A桶没水,就装满水,如果A桶的水比(B桶容量-B桶的水)要多,就用A桶的水将B桶装满,清空B桶;否则就将A桶的水全部倒入B桶中;在每一次倒水以后,判断是否得出结果,如果得出,就结束循环,接着输出执行的步骤。
合肥工业大学操作系统实验报告
操作系统实验报告班级:计算机科学与技术姓名:学号:实验3 进程的创建一、实验目的练习使用EOS API 函数CreateProcess 创建一个进程,掌握创建进程的方法,理解进程和程序的区别。
调试跟踪CreateProcess 函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。
二、实验过程记录1./*Hello.c*/#include "EOSApp.h"int main(int argc, char* argv[]){int i;for (i = 1; i <= 5; i++) {printf("Hello,world! %d\n", i);Sleep(1000);}printf("Bye-bye!\n");return 0;}作用:测试软盘镜像中的程序。
输出"Hello,world! I”并循环输出五次,每次挂起1000ms,最后输出” Bye-bye!”。
结果:2./*NewProc.c*/#include "EOSApp.h"int main(int argc, char* argv[]){STARTUPINFO StartupInfo;PROCESS_INFORMATION ProcInfo;ULONG ulExitCode; // 子进程退出码INT nResult = 0; // main 函数返回值。
0 表示成功,非0 表示失败。
#ifdef _DEBUG__asm("int $3\n nop");#endifprintf("Create a process and wait for the process exit...\n\n");//// 使子进程和父进程使用相同的标准句柄。
//StartupInfo.StdInput = GetStdHandle(STD_INPUT_HANDLE);StartupInfo.StdOutput = GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdError = GetStdHandle(STD_ERROR_HANDLE);//// 创建子进程。
合工大程序设计与艺术实验三
《程序设计艺术与方法》课程实验报告最短路问题:#in elude <iostream>#in elude <utility>#in elude <veetor>#i nclude <algorithm>using n amespaee std;typedef pair<double,double>POINT;double direetion(POINT p,POINT p1,POINT p2){POINT v1,v2;v1.first=p2.first-p.first;vl.see on d=p2.see on d-p.see ond;v2.first=p1.first-p.first;v2.see on d=p1.see on d-p.see ond;return v1.first*v2.see on d-v1.see on d*v2.first; }bool on_segment(POINT p,POINT p1,POINT p2) {double min _x=p1.first<p2.first?p1.first:p2.first;double max X=p1.first>p2.first?p1.first:p2.first;{cout<<c on vex_hull[i].first<<' '<<c on vex_hull[i].sec on d<<e ndl;}}int mai n(){vector<POINT>pv;double x,y;int i;cout<<"请输入 5 个点<x,y>:"<<endl;for(i=1;i<5;i++){cout<<"No"<<i<<":";cin> >x»y;pv.push_back(make_pair(x,y));}cout<<e ndl;find_con vex_hull(pv);system("Pause");return 0;}运行结果:Pleasefive pamtsCx, y>:1:1 No.2:3 No.3:3 No.4:44 13 31 2请按任意縫继续・・.。
合工大软件工程课程设计
合工大软件工程课程设计一、课程目标知识目标:1. 理解软件工程的基本概念、原则和方法;2. 掌握软件开发各阶段的目标、任务和关键技术;3. 了解软件项目管理、软件质量保证和软件测试的基本知识;4. 熟悉当前主流软件开发工具和环境的使用。
技能目标:1. 能够运用软件工程方法分析、设计和实现小型软件系统;2. 能够编写规范的软件文档,包括需求分析、设计、测试等;3. 能够运用项目管理方法对软件开发过程进行有效管理;4. 能够运用软件测试方法对软件系统进行功能验证和性能评估。
情感态度价值观目标:1. 培养学生热爱软件工程学科,主动关注行业发展动态;2. 培养学生具备良好的团队合作精神,尊重他人意见,善于沟通;3. 培养学生严谨、务实的学术态度,追求高质量、高效率的软件开发;4. 培养学生具备创新意识,敢于尝试新方法、新技术。
本课程针对大学软件工程专业大三、大四学生,结合课程性质、学生特点和教学要求,明确以上课程目标。
通过本课程的学习,学生将能够掌握软件工程的基本理论、方法和实践技能,为今后从事软件开发和管理工作奠定坚实基础。
同时,注重培养学生的学习兴趣、团队合作精神和创新能力,提高其综合素质,以适应社会对软件工程人才的需求。
二、教学内容1. 软件工程概述:介绍软件工程的基本概念、发展历程和未来趋势,引导学生认识软件工程的重要性。
教材章节:第1章 软件工程导论2. 软件需求分析:讲解需求分析的基本概念、方法和实践技巧,培养学生分析用户需求的能力。
教材章节:第2章 软件需求分析3. 软件设计:介绍软件设计的基本原则、方法和模型,使学生掌握软件设计的核心技术和实践方法。
教材章节:第3章 软件设计4. 编码与实现:讲解编程规范、技巧和调试方法,提高学生的编程实践能力。
教材章节:第4章 编码与实现5. 软件测试:介绍软件测试的基本概念、方法和策略,使学生掌握软件质量保证的关键技术。
教材章节:第5章 软件测试6. 软件项目管理:讲解项目管理的基本理论、方法和工具,培养学生项目管理意识。
合肥工业大学CAD实验报告
目录实验1 Protel 99SE使用基础实验2 Protel 99SE原理图设计实验3 Protel 99SE原理图编辑实验4 Protel 99SE原理图设计的电路测试与报表输出实验实验5 PCB印制电路板设计附录:1、各个实验相关电路图及报表2、PCB印制电路板设计实验1 Protel 99SE使用基础实验目的(1)掌握Protel 99SE的启动和退出方法;(2)熟悉Protel 99SE的操作环境(菜单栏、工具栏、状态栏以及系统菜单等);(3)掌握创建和打开设计数据库文件的方法;(4)掌握启动原理图编辑器、印制电路板编辑器以及其他编辑器的基本方法;(5)掌握不同编辑器之间的切换方法;实验步骤1.启动Protel 99SE2.创建设计数据库文件3.打开设计数据库文件4.启动原理图编辑器5.启动印制电路板编辑器6.不同编辑器之间的切换思考题(1)如何在不同类型的编辑器或相同类型的不同文件之间进行切换?答:在创建不同类型的文件或相同类型的不同文件并进入相应的编辑器时,在工作窗口上部会相应地增加不同的标签。
用鼠标单击选中这些标签就可以在不同类型的编辑器或相同类型的不同文件之间自由切换实验2 Protel 99SE原理图设计实验目的(1)掌握各类窗口的打开、关闭和切换方法;(2)掌握各种工具栏的打开和关闭(或隐藏)方法;(3)掌握绘图区域的放大与缩小方法;(4)掌握文件管理的基本操作(创建、打开、保存、关闭和删除原理图文件等);(5)熟悉画原理图工具栏中各按钮的功能,并掌握绘制原理图的相关操作(设置图纸、放置和调整元件、原理图的布线和调整);(6)熟悉画图形工具栏中各按钮的功能,并掌握在原理图上添加注释文字和图线的方法;实验步骤1.启动原理图编辑器,并创建原理图文件2.设置电路图纸(1)设置图纸参数(2)设置文件信息3.放置和调整元件(1)装载元件库(2)选取和放置元件(3)编辑元件属性(4)调整元件4.原理图的布线(1)绘制导线(2)设置网络标号(3)放置线路节点(4)放置电源及接地符号(5)绘制总线(6)绘制总线分支(7)制作电路的输入/输出端口5.调整、检查和修改利用Protel 99SE的画图工具绘制自定义标题栏,并在标题栏中添加必要的文字标注、波形曲线和图片等,以增加原理图的可读性和可视性。
合工大程序设计艺术与方法实验四动态规划
《程序设计艺术与方法〉课实验告实验名棋验四态规划班学号实验期2018612 指导师徐本柱一、实验目的和要求(1) 理解动态规划的基本思想、动态规划算法的基本骤(2) 掌握动态规划算法实步骤二、实验?习容动态规划三、实验项目摘要(1) 求两个字符串的最长公共子序列。
X的一个子序列是相应于X下标序列{1, 2, ? , 的}一个子序列,求解两个序列的所有子序列中长度最大的,例如输入:pear, peach输出:pea。
(2) 给定两个字符串a和b,现将串a通过变换变为串b,可用的操作为,删除串a中的一个字符;在串a的某个位置插入一个元素;将串a中的某个字母换为另一个字母。
对于任意的串a和串b,输出最少多少次能够将串变为串b。
思考:输出变换的步。
(3) 输入一个矩阵,计算所有的子矩阵中和的最大值。
例如,输入0 -2 -7 09 2 -6 2-4 1-4 1-1 8 0 -2输出为:15四、实验结果与分析(源程序及相关说明)1.求两个字符串的最长公共子序列#in elude "stdafx.h" #in clude<stdio.h> #in cludevstri ng> #in clude<iostream> using n amespace std; #define MAXLEN 100int seat[MAXLEN][MAXLEN];〃其中0表示可选的子序列点,1表示选择str1 ( 0, i-1 ) , str2 ( 0, j)的公共子序列,-1选择str1 (0, i ) , str2 ( 0, j-1)的公共子序列 int Long[MAXLEN][MAXLEN];〃 表示选择 str1 ( 0, i ) , str2 ( 0 , j)的公共子序列的长度 void LCSLe ngth(stri ng str1, stri ng str2, i ntm, int n) {int i, j ;for (i = 0; i <= m; i++)Lon g[i][0] = 0; for (j = 1; j <= n; j++)Lon g[0][j] = 0;//第一行第一列不使用,方便计算 for (i = 1; i <= m; i++) {for (j = 1; j <= n; j++) {算法思想:通过动态规划求解: 选的子序列点,1表示递归选择的公共子序列, Long 表示选择 存储着最大的长度。
合工大(汇编)语言程序设计实验报告
.合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:****************学号:**********姓名:*****目录实验一··3实验二··7实验三··12实验四··22实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序实验内容一:e ds:0200 E7 1A 3F 00e ds:0204 C4 E5 6B 00实验内容二:(1)直接寻址方式MOV AX,[0200]MOV BX,[0202]ADD AX,[0204]ADC BX,[0206]MOV [0208],AXMOV [020A],BX(2)寄存器间接寻址方式MOV SI,0200HMOV DI,0204HMOV BX,0208HMOV AX,[SI]MOV DX,[SI+2]ADD AX,[DI]ADC DX,[DI+2]MOV [BX],AXMOV [BX+2],DX四.实验结果(包括必要的截图)实验内容一:输入数据:显示数据:实验内容二:(1)直接寻址方式程序段编辑:反汇编:运行:结果在DS:0208 单元中为00AB00ABH(2)寄存器间接寻址方式程序段编辑:反汇编:运行:结果高字存放在dx中,低字存放在ax中(结果为00AB00ABh)五.实验体会通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。
合工大c课程设计
合工大c 课程设计一、课程目标知识目标:1. 理解并掌握合工大C课程中关键概念和原理,如基本语法、数据类型、控制结构等;2. 学会运用合工大C进行简单的程序设计,解决实际问题;3. 了解合工大C在工程领域的应用及其重要性。
技能目标:1. 培养学生运用合工大C编写、调试和运行程序的能力;2. 培养学生运用合工大C进行问题分析、设计和解决的能力;3. 提高学生的逻辑思维能力和编程技能。
情感态度价值观目标:1. 培养学生对合工大C编程的兴趣和热情,激发学生学习编程的积极性;2. 培养学生良好的编程习惯,注重代码规范和团队协作;3. 引导学生认识到合工大C编程在科技发展和社会进步中的重要作用,树立正确的价值观。
课程性质:本课程为实践性较强的学科,结合理论知识与实际操作,使学生能够掌握合工大C编程技能。
学生特点:学生处于掌握一定计算机基础知识的阶段,对编程有一定的好奇心和求知欲,但需注重培养学生的学习兴趣和动手能力。
教学要求:注重理论与实践相结合,强调实践操作,充分调动学生的积极性,培养其编程思维和解决问题的能力。
通过分解课程目标为具体的学习成果,便于教学设计和评估。
二、教学内容1. 合工大C基础知识:包括变量、数据类型、运算符、表达式等基本概念,让学生掌握合工大C的基本语法。
教材章节:第一章至第三章2. 控制结构:讲解顺序结构、分支结构、循环结构等程序设计的基本控制逻辑。
教材章节:第四章至第六章3. 函数:介绍函数的定义、调用、参数传递等内容,培养学生模块化编程思想。
教材章节:第七章4. 数组与指针:讲解数组的使用、指针的概念及其应用,提高学生数据操作和处理能力。
教材章节:第八章至第九章5. 结构体与文件:学习结构体类型、文件操作等高级应用,使学生能够处理更复杂的编程问题。
教材章节:第十章至第十一章6. 综合案例:结合实际问题,进行程序设计实践,巩固所学知识,提高学生编程技能。
教材章节:综合案例教学内容安排与进度:第一周:合工大C基础知识(第一章至第三章)第二周:控制结构(第四章至第六章)第三周:函数(第七章)第四周:数组与指针(第八章至第九章)第五周:结构体与文件(第十章至第十一章)第六周:综合案例与实践教学内容确保科学性和系统性,以教材为基础,结合实践案例,使学生能够循序渐进地掌握合工大C编程知识。
合肥工业大学计算机专业计算方法实验报告
合肥⼯业⼤学计算机专业计算⽅法实验报告合肥⼯业⼤学计算机与信息学院实验报告课程:计算⽅法专业班级:学号:姓名:Java界⾯其实都不难按照程序流程图就可以完成了实验⼀插值与拟合⼀、实验⽬的(1) 明确插值多项式和分段插值多项式各⾃的优缺点;(2) 编程实现三次样条插值算法,分析实验结果体会⾼次插值产⽣的龙格现象;(3) 理解最⼩⼆乘拟合,并编程实现线性拟合,掌握⾮线性拟合转化为线性拟合的⽅法 (4) 运⽤常⽤的插值和拟合⽅法解决实际问题。
数据如下:j x 165 123 150 123 141 j y187126172125148三、基本原理(计算公式)(1)三次样条插值在每个内节点上具有2阶导数。
(2)最⼩⼆乘法拟合直线为y=a+bx ,⽽a ,b 有如下等式(N 为给出的数据点的总个数)i i y x b N =+∑a ; ∑∑∑=+i i i i y x x b x 2a四、算法设计与实现(流程图,关键点)最⼩⼆乘法直线拟合:输⼊数据后,按照公式计算a,b。
⽤得到的拟合直线计算预测点的近似函数值。
五、输⼊与输出(1)三次样条插值输⼊:区间长度,n+1个数据点,预测点输出:预测点的近似函数值,精确值,及误差(2)最⼩⼆乘法直线拟合六、结果讨论和分析代码三次样条插值#include#include#define N 10using namespace std; double u0(double x){ return (x-1)*(x-1)*(2*x+1);return x*x*(3-2*x);}double v0(double x){return x*(x-1)*(x-1);}double v1(double x){return x*x*(x-1);}double s3(double x,double y,double y1,double m,double m1,double h){ return u0(x)*y+u1(x)*y1+h*v0(x)*m+h*v1(x)*m1; }double f(double x){return 1/(1+x*x);}int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"<system("pause");return 0;}double x[N+1],y[N+1],m[N+1],A[N],B[N],C[N];double h[N];double a[N],b[N];double f0,fn;double temp;int i;for(i=0;i<=N;i++){fin>>x[i]>>y[i];}fin>>f0>>fn;h[0]=x[1]-x[0];for(i=1;ib[i]=3*((1-a[i])*(y[i]-y[i-1])/h[i-1]+a[i]*(y[i+1]-y[i])/h[i]);}m[1]=b[1]-(1-a[1])*f0;m[N-1]=b[N-1]-a[N-1]*fn;for(i=2;im[i]=b[i];}for(i=1;iB[i]=2;C[i]=a[i];}for(i=2;iA[i]=1-a[i];}C[1]=C[1]/B[1];m[1]=m[1]/B[1];double t;for(i=2;i!=N-2;i++){t=B[i]-C[i-1]*A[i];C[i]=C[i]/t;m[i]=(m[i]-m[i-1]*A[i])/t;}m[N-1]=(m[N-1]-m[N-2]*A[N-1])/(B[N-1]-C[N-2]*A[N-1]); for(i=N-2;i>0;i--){m[i]=m[i]-C[i]*m[i+1];}cout<<"please:(输⼊插值节点在"<while(cin>>temp){double tt=temp;if(tempx[N]){cout<<"插值节点为"<continue;}}temp=(temp-x[i-1])/h[i-1];temp=s3(temp,y[i-1],y[i],m[i-1],m[i],h[i-1]); cout<<"插值节点为"<}system("pause");fin.close();return 0;}最⼩⼆乘法的直线拟合#include#include#define n 5using namespace std;double sum(double x[],int k){int i;double sum=0;for(i=0;isum=sum+x[i];return sum;}double sum2(double x[],int k){int i;double sum=0;for(i=0;isum=sum+x[i]*x[i];return sum;}double sumxy(double x[],double y[],int k){ int i;double sum=0;for(i=0;isum=sum+x[i]*y[i];int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"<system("pause");return 0;}double x[n],y[n],a,b;double x0,y0;int i;for(i=0;ifin>>x[i]>>y[i];}b=(n*sumxy(x,y,n)-sum(x,n)*sum(y,n))/(n*sum2(x,n)-sum(x,n)*sum(x,n));a=(sum(y,n)-b*sum(x,n))/n;cout<<"最⼩⼆乘法直线拟合得到a: "<cout<<"请输⼊插值节点x:";while(cin>>x0){y0=a+b*x0;cout<<"当x="<cout<<"请输⼊插值节点x:";}system("pause");fin.close();return 0;}实验⼆数值积分⼀、实验⽬的(1)熟悉复化梯形⽅法、复化Simpson⽅法、梯形递推算法、龙贝格算法;(2)能编程实现龙贝格算法和中点加速;(3)理解并掌握⾃适应算法和收敛加速算法的基本思想;(4)分析实验结果体会各种⽅法的精确度,建⽴计算机求解定积分问题的感性认识x1sin (2)⽤中点加速⽅法计算xe 的⼀阶导数三、基本原理(计算公式)(1)龙贝格算法梯形递推公式∑-=++=10212)(22n k k n n x f h T T加权平均公式:n n n S T T =--1442 n n n C S S =--144222 n nn R C C =--144323 (2)中点加速中点公式: G(h)=(f(a+h)-f(a-h))/2/h 加权平均:G1(h)=4*G(h/2)/3-G(h)/3 G2(h)=16*G1(h/2)/15-G1(h)/15 G3(h)=64*G2(h/2)/63-G2(h)/63四、算法设计与实现(流程图,关键点)中点加速:输⼊数据后根据公式计算导数值五、输⼊与输出图2.2梯形递推算法流程图图2.3龙贝格算法流程图(1) ⽤龙贝格算法计算dx xx1sin 输⼊:积分区间,误差限输出:序列Tn ,Sn,Cn,Rn 及积分结果 (2)⽤中点加速⽅法计算xe 的⼀阶导数输⼊:求导节点,步长输出:求得的导数值,精确值六、结果讨论和分析代码#includeusing namespace std;double f(double x){if(x==0)return 1;return sin(x)/x;}int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"< system("pause");return 0;}double a,b,e,t1,t2,s1,s2,c1,c2,r1,r2; double x,h,s;fin>>a>>b>>e;cout<<"积分区间为["<cout<<"k T2 S2 C2 R2"<h=b-a;t1=(f(a)+f(b))*h/2;cout<<0<<" "<int k;for(k=1;k<=10;k++,h=h/2,t1=t2,s1=s2){ s=0;x=a+h/2;do{s=s+f(x);x=x+h;}while(xt2=t1/2+h*s/2;s2=t2+(t2-t1)/3;}c2=s2+(s2-s1)/15;if(k==2){cout<c1=c2;continue;}r2=c2+(c2-c1)/63;cout<if(k==3){r1=r2;c1=c2;continue;}if(fabs(r2-r1)cout<<"数值积分结果为"< break;}r1=r2;c1=c2;}system("pause");return 0;}中点加速算法#include#include#includeusing namespace std; double f(double x){ return exp(x);}}double g(double x,double h){return (f(x+h)-f(x-h))/2/h;}double g1(double x,double h){return 4*g(x,h/2)/3-g(x,h)/3;}double g2(double x,double h){return 16*g1(x,h/2)/15-g1(x,h)/15;}double g3(double x,double h){return 64*g2(x,h/2)/63-g2(x,h)/63;}int main(){ifstream fin;fin.open("E:\\t.txt");if(!fin){cout<<"error opening input stream"<system("pause");return 0;}double a,h;while(fin>>a>>h)cout<<"当x="<<a<< ",步长h="<< h<<",x处⼀阶导数值精确值为"<<f1(a)<<",中点加速求得x处⼀阶导数值为"<<g3(a,h)<<",误差为"<<f1(a)-g3(a,h)<<endl;</p>system("pause");fin.close();return 0;}实验三⾮线性⽅程求根迭代法⼀、实验⽬的(1)熟悉⾮线性⽅程求根简单迭代法,⽜顿迭代及⽜顿下⼭法(2)能编程实现⽜顿下⼭法(3)认识选择迭代格式的重要性(4)对迭代速度建⽴感性的认识;分析实验结果体会初值对迭代的影响⼆、实验内容⽤⽜顿下⼭法解⽅程013=--x x (初值为0.6)三、基本原理(计算公式)求⾮线性⽅程组的解是科学计算常遇到的问题,有很多实际背景.各种算法层出不穷,其中迭代是主流算法。
2011_合肥工业大学大学生创新性实验计划项目申请书(艺术设计小组 ——组长:江涛)
附件1校级大学生创新性实验计划项目申报书项目名称基于人机工学理论基础上合工大教室舒适度调查与研究申请者江涛所在学院建筑与艺术学院专业年级2010级艺术设计指导教师李秀梅汪利项目起止时间2011.11—2012.10联系电话电子信箱合肥工业大学创新学院填表须知一、《合肥工业大学大学生创新性实验计划项目申报书》(注明国家级或校级)要按顺序逐项填写,内容要实事求是,表达要明确、严谨。
空缺项要填“无”。
要求一律用A4纸打印,于左侧装订成册。
二、申请参加合肥工业大学大学生创新性实验计划项目团队人数不得超过5人(1人为立项负责人,参与合作研究者1-4人)。
三、《合肥工业大学大学生创新性实验计划项目申请表》由申报学生所在学院初审,签署意见后,一式一份报送创新学院。
四、如填表有不明事宜,请与创新学院联系和咨询。
(联系电话:2901856)申请者情况姓名江涛性别男出生年月1991.11 所在院(系)建艺学院专业年级艺设10-2 学号项目组成员情况姓名性别出生年月专业年级分工周强男1990.11 艺设10-2 收集资料,总结报告陈飞男1991.6 艺设10-1 学校调研,总结分析张红艳女1990.8 艺设10-1 收集资料,总结报告贡文欢女1990.9 艺设10-1 学校调研,总结分析指导教师情况姓名李秀梅汪利职称讲师学历/学位硕士研究生讲授课程视觉传达设计/环境艺术设计研究方向视觉传达设计/环境艺术设计所在院(系)建筑与艺术学院E-mail地址电话课题来源:□科研□教学□设计□工程□自选□其他()一、申请理由(知识条件,特长、兴趣,相关经历等)本项目组负责人和所有成员都是建筑与艺术学院艺术设计专业大二的学生,已经完成大部分公共基础课的学习研究,对专业设计有着自己一定的理解与认识,有着良好的专业知识依托。
项目组成员来自同一专业,均成绩优异,具有严谨的科学态度、自主创新意识、实践学习能力及团队合作精神,有着饱满的热情,独特的想法。
合工大 程序设计艺术与方法 实验一
《程序设计艺术与方法》课程实验报告#include"stdafx.h"#include<iostream>#include<ctime>#include<vector>#include<list>#include<algorithm>using namespace std;bool comper(int a, int b){return (a > b);}//vector练习void OUTV(vector<int> v){vector<int>::iterator it = v.begin();for (; it != v.end(); ++it){cout << (*it) << " ";}cout << endl;}void FindV(vector<int> &exp){int x;vector<int>::iterator L;cout << "请输入你要查找的数:" << endl;cin >> x;L = find(exp.begin(), exp.end(), x);if (L != exp.end()){cout << "查找成功!" << endl;cout << "该数为:" << *L << endl;}else{cout << "无该数!" << endl;exp.push_back(x);cout << "输出结果:";OUTV(exp);}}void SortV(vector<int> &exp){cout << "升序:" << endl;sort(exp.begin(), exp.end());OUTV(exp);cout << "降序" << endl;sort(exp.begin(), exp.end(),comper);OUTV(exp);}void DeldetV(vector<int> &exp){cout << "删除最后一个元素" << endl;exp.pop_back();OUTV(exp);}void V(){vector<int> exp1;srand((int)time(0));cout << "vector练习:" << endl;for (int i = 0; i < 10; i++)exp1.push_back(rand());//插入10个随机数OUTV(exp1);exp1.insert(exp1.begin(), rand());OUTV(exp1);FindV(exp1);SortV(exp1);DeldetV(exp1);cout << "最大值:" << exp1[0] << endl;cout << "最小值:" << exp1[exp1.size()-1] << endl;exp1.clear();//清空迭代器}//List练习void OUTL(list<int> v){list<int>::iterator it = v.begin();for (; it != v.end(); ++it){cout << (*it) << " ";}cout << endl;}void FindL(list<int> &exp){int x;list<int>::iterator L;cout << "请输入你要查找的数:" << endl;cin >> x;L = find(exp.begin(), exp.end(), x);if (L != exp.end()){cout << "查找成功!" << endl;cout << "该数为:" << *L << endl;}else{cout << "无该数!" << endl;exp.push_back(x);cout << "输出结果:";OUTL(exp);}}void SortL(list<int> &exp){cout << "排序:" << endl;exp.sort();OUTL(exp);}void DeldetL(list<int> &exp){cout << "删除最后一个元素" << endl;exp.pop_back();OUTL(exp);}void L(){list<int> exp2;srand((int)time(0));cout << "List练习:" << endl;for (int i = 0; i < 10; i++)exp2.push_back(rand());//插入10个随机数OUTL(exp2);exp2.push_front(rand());OUTL(exp2);FindL(exp2);SortL(exp2);DeldetL(exp2);//清空迭代器exp2.clear();}int_tmain(int argc, _TCHAR* argv[])。
合肥工业大学计算机组成原理实验报告(DOC)
实验一基本运算器实验一、实验目的了解运算器的组成结构;掌握运算器的工作原理。
二、实验内容1、连线说明:如果EXEC键上方指示灯不亮,请按一次EXEC键,点亮指示灯,表示实验仪在运行状态。
3、给暂存器A赋初值(1)拨动开关区单元的K7..K0开关,形成二进制数01011000(或其它值);指示灯亮,表示该位是‘1’,灭为‘0’。
(2)拨动开关区单元K15(wA)、K14(wB)、K13(rALU)、K12(CN_I)开关,赋wA=0(允许写A)、wB=1(禁止写B)、rALU=1(不允许ALU输出)、CN_I=0,按CON单元的STEP按键一次,产生一个T1的下降沿,将二进制数01011000写入暂存器A中,ALU单元的A_7…A_0LED 上显示A中的值4、给暂存器B赋初值(1)拨动开关区单元的K7..K0开关,形成二进制数10101011(或其它值)。
(2)赋wA=1(禁止写A)、wB=0(允许写B)、rALU=1(不允许ALU输出)、CN_I=0,按CON单元的STEP按键一次,产生一个T2的下降沿,将二进制数10101011写入暂存器B 中,ALU单元的R_7…R_0LED上显示B中的值5T3节拍,当rALU(K13)=0,如果S3S2S1S0的值是0000时,T2、T3节拍时,允许ALU结果输出;S3S2S1S0的值是其它数值,T3节拍时,允许ALU结果输出,显示于扩展区的二位数码管、DS94..DS101的LED上。
6、根据后边的“运算结果表”,改变K20(S0)、K21(S1)、K22(S2)、K23(S3)、K12(CN_I)的值,观察并记录运算器的输出。
例如:S0=0,S1=0,S2=0,S3=0,ALU的D7_D0 = 58H;FC、FZ、FS、I不变。
注意:只有按CON单元的STEP按键一次,产生一个T3的下降沿,ALU才将标志位FC、FZ、FS、I写入标志寄存器PSW中,才能在ALU单元的FZ、FC、FS、I指示灯上看到结果。
游戏程序设计实验3-河北工业大学资料
计算机游戏程序设计实验指导书河北工业大学计算机科学与软件学院实验三使用游戏元素一、实验目的与要求1. 熟悉及掌握地形元素的使用方法。
2. 熟悉及掌握光源的使用方法。
3. 熟悉及掌握天空盒子的使用方法。
4. 熟悉及掌握摄像机的使用方法。
二、实验原理及知识点在3D游戏世界中,通常会将很多丰富多彩的游戏元素融合至游戏中。
游戏元素是制作游戏的必备条件,它种类繁多并且作用也大不相同。
游戏元素可分为常用元素与不常用元素两种,常用元素是游戏中一些比较重要的元素,它们需要使用脚本来实现一些特殊功能,比如玩家控制的主角对象、需要攻击的敌人、通关游戏的必要条件等,因此常用元素将直接影响游戏是否可以继续进行;而不常用元素在游戏世界中主要起装饰作用,比如游戏中的天空、云朵、树木和地形等,这些元素不会影响到游戏的主线,但是它们可以提升游戏的整体效果。
1游戏地形玩过3D游戏的朋友应该对那些高低起伏的地形很有印象吧。
无论是秀丽的山川还是辽阔的平原,地形元素都会很生动地出现在游戏世界中,这些高低起伏的地形是2D游戏无法媲美的。
Unity中有一套非常好的地形编辑器,它可以让开发者实现游戏中任何复杂的地形,还可以制作地形上的一些元素,比如树木、草坪和石头等。
1.1创建地形下面开始学习如何创建游戏地形。
首先打开Unity,在导航菜单栏中选择“Terrain”→“Create Terrain”菜单项,创建一个游戏地形。
图1 “Terrain”菜单1.2 地形参数地形参数包括地形的宽度、高度、长度、分辨率和高度图等。
创建完地形后,可任意修改它们的参数。
在Unity导航菜单栏中选择“Terrain”→“Set Resolution”菜单项,此时将弹出“Set Heightmap resolution”窗口,在每一个地形参数右侧直接输入数值即可修改它,然后在界面下点击右下角的“Set Resolution”按钮,即可将当前设置的所有地形参数应用到地形当中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计艺术与方法》课程实验报告
四、实验结果与分析(源程序及相关说明)
思考:
判线段相交时,如果有个线段的端点在另一条线段上,注意可能与另一条线段上的端点重合,思考这样的情况怎么办。
用跨立的方法。
线段相交满足且只需满足如下两个条件就可以了:
(1)两条线段相互跨立;
(2)一条线段的一个端点在另一条线段上。
如果两线段相交,则两线段必然相互跨立对方,若p1p2跨立p3p4,则(p1-p3)×(p4-p3)*(p2-p3)×(p4-p3)>0,当(p1-p3)×(p4-p3)=0时,说明p1,p3,p4共线,但是因为已经通过了快速排斥实验,所以点p1一定在线段p3,p4上。
所以判断线段p1p2,p3p4相交的依据是(p1-p3)×(p4-p3)*(p2-p3)×(p4-p3)>=0。
#include <iostream>
#include <utility>
using namespace std;
typedef pair<double,double> POINT;
double direction(POINT p,POINT p1,POINT p2)
{
POINT v1,v2;
v1.first =p2.first -p.first ;
v1.second=p2.second-p.second;
v2.first =p1.first -p.first;
v2.second=p1.second-p.second;
return v1.first*v2.second-v1.second*v2.first;
}
bool on_segment(POINT p,POINT p1,POINT p2)
{
double min_x=p1.first<p2.first?p1.first:p2.first;
double max_x=p1.first>p2.first?p1.first:p2.first;
最短路问题:
#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<double,double>POINT;
double direction(POINT p,POINT p1,POINT p2) {
POINT v1,v2;
v1.first=p2.first-p.first;
v1.second=p2.second-p.second;
v2.first=p1.first-p.first;
v2.second=p1.second-p.second;
return v1.first*v2.second-v1.second*v2.first;
}
bool on_segment(POINT p,POINT p1,POINT p2) {
double min_x=p1.first<p2.first?p1.first:p2.first;
double max_x=p1.first>p2.first?p1.first:p2.first;
}
while (1);
for (int i=0;i<convex_hull.size();i++)
{
cout<<convex_hull[i].first<<' '<<convex_hull[i].second<<endl;
}
}
int main()
{
vector<POINT>pv;
double x,y;
int i;
cout<<"请输入5个点<x,y>:"<<endl;
for(i=1;i<5;i++)
{
cout<<"No"<<i<<":";
cin>>x>>y;
pv.push_back(make_pair(x,y));
}
cout<<endl;
find_convex_hull(pv);
system("Pause");
return 0;
}
运行结果:。