考试程序设计实验报告_第1页
考试程序设计实验报告_第2页
考试程序设计实验报告_第3页
考试程序设计实验报告_第4页
考试程序设计实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计实验学院:应用数学学院班级:金融数学:学号:201320030129实验一类与对象【问题描述】定义一个基类和多个派生类,像基本类型那样应用这些类。【基本要求】(1)至少定义一个基类理数类 rational 或点形状类型 sh。(2)至少定义 2 个派生类。如圆形类、三角形类型或四边形类型等。(3)类定义中包含构造函数、析构函数、重载函数、重载运算符、虚函数等。(4)类定义为头文件。成员函数由源程序文件实现。(5)项基本类型那样应用这些类编写应用程序。【实验内容】圆形面积的派生类。程序中通过基类的指针来调用派生类中的虚函数计算出不同形状的面积。【实验目的】1.掌握面象的基本概念,类的定义

2、方法。2.掌握类成员的权限及类成员的方法。3.掌握内联函数和缺省函数。4.掌握构造函数与析构函数的意义及使用方法。#include #include #defin3.14class sh程序如下:定义一个抽象类 Sh用以计算面积,从中派生出计算长方形、梯形、public:virtual float area()=0;class circle:public shprivate:float r; public: circle(float r1)r=r1; float area()return (float)pi*r*r;class rectangle:public shprivate:float

3、width,height; public:rectangle(float w1,float h1)width=w1;height=h1;float area()return width*height;float total(sh*s,n)float sum=0.0;for(i=0;iarea(); return sum;void main()sh* s2; s0=new circle(1);coutarea()endl;s1=new rectangle(2,4);coutarea()endl; couttotal(s,2)endl实验二弦截法求解方程的根1、用弦截法求解一元三次方程 f(x)=

4、x3-5x2+16x-80=0 的根。【问题分析】弦截法求解方程的根的方法如下: (1)取两个不同的初始点 x1、x2,使得 f(x1)*f(x2)0,这时,区间(x1,x2)有一个根。注意:x1、x2 的值不要相差太大,以保证区间(x1,x2)内只有一个根。 连接(x1,f(x1))与(x2,f(x2)两点,此直线(即弦)与 x 轴输出结果如下:的交点为 x*,x*的值可由如下公式求出:x*=(x1*y2-x2*y1)/(y2-y1) 若 f(x*)f(x2)0,则区间(x*,x2)有一根,令 x1=x*。若f(x1)*f(x*)0,则区间(x1,x*)有一根,令 x2=x*。 重复步骤(2

5、)和步骤(3),直到 f(x*)的值足够接近于 0。一步迭代法求解方程的根:程序如下:#include #include float f(float x)float y;y=(x-5)*x+16)*x-80; return y;float xpo(float x1,float y1,float x2,float y2)float x;x=(x1*y2-x2*y1)/(y2-y1); return x;float root(float x1,float y1,float x2,float y2)float x,y; y1=f(x1); dox=xpo(x1,y1,x2,y2); y=f(x);x

6、1=x;y1=y;while (fabs(y)=0.0001); return x;void main()float x,x1,x2,y1,y2;prf(请输入两个不同的初始值 x1,x2=); scanf(%f%f,&x1,&x2);y1=f(x1);y2=f(x2);x=root(x1,y1,x2,y2);prf(一元三次方程的一个根:%8.3fn,x);输出结果如下:多步迭代法求解方程的根:程序如下:#include #includefloatfloatf(floatx)y;y=(x-5)*x+16)*x-80;returny;floatfloatxpo(floatx1,floaty1,

7、floatx2,floaty2)x;x=(x1*y2-x2*y1)/(y2-y1);returnx;floatfloatroot(floatx1,floaty1,floatx2,floaty2)x,y;y1=f(x1); dox=xpo(x1,y1,x2,y2); y=f(x);x1=x2;y1=y2; x2=x;y2=y;while returnvoid(fabs(y)=0.0001);x;main()floatx,x1,x2,y1,y2;prf(请输入两个不同的初始值 x1,x2=);scanf(%f y1=f(x1);y2=f(x2);%f,&x1,&x2);x=root(x1,y1,x

8、2,y2);prf(一元三次方程的一个根:%8.3fn,x);输出结果如下:实验三求解一元 N 次方程的根:程序如下:#include #include#definen5floatf(float x,floatfloat y; k;y=am;for(k=m-1;k=0; k-)y=y*x+ak;a,m)returnfloatfloaty;xpo x;(floatx1,floaty1,floatx2,floaty2)x=(x1*y2-x2*y1)/(y2-y1); return x;floatroot(floatx1,floaty1,floatx2,floaty2,floata)float x,y; dox=xpo(x1,y1,x2,y2);y=f(x,a,n); x1=x2;y1=y2; x2=x;y2=y;while(fabs(y)=0.0001&x1!=x2); returnx;voidmain() floatx,x1,x2,y1,y2;k;floatpn+1;prf(请输入一元%d 次方程的系数(p0、p1、p2、.、pn)=n,n);for(k=0;k=n;k+)scanf(%f,&pk);pr prf(n);f(请输入求解方程(迭代方法)的两个初始值 x1,x2=);scanf(%f%f,&x1,&x2);y1=f(x1,p,n);y2=f(x2,p,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论