C++案例分析电子教案_第1页
C++案例分析电子教案_第2页
C++案例分析电子教案_第3页
C++案例分析电子教案_第4页
C++案例分析电子教案_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

1、精品文档C+®序设计及实验上机操作题:另有重载运算符“ +1、设计一个三角形类 Triangle,包含三角形三条边长的私有数据成员, 与“-”,以实现求两个三角形对象的面积之和与之差。提示:在Triangle类中设计两个友元函数,重载运算符"+"与"-"。#include<iostream.h>#include<math.h>class Triangleint x,y,z;double area;public:Triangle(int i,int j,int k)double s;x=i;y=j;z=k;s=(x+y+z

2、)/2.0;area=sqrt(s*(s-x)*(s-y)*(s-z);void disparea()cout<<"Area="<<area<<endl;friend double operator+(Triangle t1,Triangle t2)精品文档return t1.area+t2.area;friend double operator-(Triangle t1,Triangle t2)return t1.area-t2.area;;void main()Triangle t1(3,4,5),t2(4,5,6);double s

3、;cout<<"t1:" t1.disparea();cout<<"t2:" t2.disparea();s=t1+t2;cout<<"总面积="<<s<<endl;s=t1-t2;cout<<"总面积="<<s<<endl;2、试建立一个类Student用于描述学生信息,具体要求如下:私有数据成员int id:学生学号。char yuwen:语文成绩(五级分制:A、B、C、D和E,其它无效)float shuxue:数

4、学成绩(百分制)。公有成员函数1) 缺省构造函数:初始化数据成员为。或NULL值。2) 带参构造函数:用参数初始化数据成员。3) void Print():输出本对象的学号、语文成绩和数学成绩。4) 修改函数void Change():从键盘输入新的学号、语文成绩和数学成绩,修改相应数据成员的值。5) 比较函数void Comp(Student &a, Student &b): 比较a学生和b学生的数学成绩,找出数学成绩最高和最低的学生,输出他们的信息。主程序:定义三个以上的对象,并且每个成员函数至少被调用一次。#include<iostream.h>class S

5、tudentint id; 学生学号。char yuwen; 语文成绩(五级分制:A、B、C、D和E,其它无效)。float shuxue; /数学成绩(百分制)。public:Student()id=0, yuwen=NULL;shuxue=0;Student(int,char,float);void Print();void Change();void Comp(Student &a, Student &b);void main()Student A(78,'E',86),B(84,'D',82),C;C.Change();A.Comp(B,

6、C);Student:Student(int a,char b, float c)id=a, yuwen=b;shuxue=c;void Student:Print( )cout<<" 学号:"<<id<<",语文成绩:"<<yuwen<<",数学成绩:"<<shuxue<<endl;void Student:Change( )cout<<"请输入学生的学号、语文成绩(五级分制:A/B/C/D/E ,其它无效)和数学成绩:n”;c

7、in>>id>>yuwen>>shuxue;void Student:Comp(Student &a, Student &b)Student max,min;max= shuxue>a.shuxue?(shuxue>b.shuxue? *this:b):(a.shuxue>b.shuxue?a:b);min= shuxue<a.shuxue?(shuxue<b.shuxue? *this:b):(a.shuxue<b.shuxue?a:b);cout<<"数学成绩最高和最低的学生分别是

8、:n"max.Print();min.Print();3、【要求】按以下描述和要求建立两个类:基类 Rectangle和派生类Cube:Rectangle私有成员:double x1, y1 ;左下角的坐标double x2, y2 ;右上角的坐标公有成员Rectangle(double a=0, double b=0, double c=0, double d=0);带缺省值的构造函数double getwidth();计算并返回矩形的宽double getlength();计算并返回矩形的长virtual void display。; 输出矩形的各坐标及长宽注:正立方体Cube的

9、底面矩形从基类继承Cube:私有成员:string name;立方体名称(字符串对象)double h;立方体高度公有成员:Cube (string="", double =0, ); 带缺省值的构造函数void set (string, double);修改立方体标识符和高度值void display。;/输出立方体全部信息,并计算输出体积Cube add ( Cube &S ); 将参数对象 S的高度加到this对象上。以上成员函数的参数名如有未给出的则自已命名。头文件包含语句为:#include <iostream.h>#include <s

10、tring.h>主函数要求:(1) 定义 Rectangle 类对象 A坐标:10, 10, 30,40;定义Cube类对象B坐标:20, 10, 30,40;名称和高度:Box, 60、C(C数据由B拷 贝生成)和D ( D数据暂无)。(2) 调用函数set修改又象C的名称和高度值。数据为 Trunk, 95。(3) 调用函数display及相关函数输出对象 A、B和C的全部数据,计算输出B和C的体积。每个对象的信息占一行。(4) 调用add函数,计算D=B+C。输出D的全部数据,计算并输出D的体积。#include<iostream.h>#include<strin

11、g.h>class Rectangledouble x1, y1 ; 左下角的坐标double x2, y2 ; 右上角的坐标public:Rectangle(double a=0, double b=0, double c=0, double d=0)x1=a,y1=b;x2=c,y2=d;double getwidth()return (x2-x1);计算并返回矩形的宽double getlength()return (y2-y1); / 计算并返回矩形的长void display。;输出矩形的各坐标及长宽;class Cube :public Rectanglechar name1

12、0;/立方体名称(字符串对象)double h; 立方体高度public:Cube (double a=0,double b=0,double c=0,double d=0,char *s=0, double h1=0):Rectangle(a,b,c,d)/ 带缺省值的构造函数if(s) strcpy(name,s);h=h1;void set (char *, double);修改立方体标识符和高度值void display。;/输出立方体全部信息,并计算输出体积Cube add(Cube &S); /将参数对象 S的高度加到this对象上。;void main()Rectangl

13、e A(10,10,30,40);Cube B(20,10,30,40,"Box",60),C(B),D;B.set("Trunk”, 95);A.display();B.display();C.display();D=B.add(C);D.display();void Rectangle:display()cout<<"矩形:"cout<<"左下角的坐标:"<<x1<<','<<y1<<",右上角白坐标:"<&

14、lt;x2<<','<<y2<<','cout<<"长:"<<(x2-x1)<<",宽:"<<(y2-y1)<<endl;void Cube:set (char *s, double h1)h=h1;strcpy(name,s);void Cube:display()double mj=getwidth()*getlength();cout<<"长方体:"cout<<"底面积

15、为:"<<mj<<','cout<<"体积为:"<<mj*h<<endl;Cube Cube:add(Cube &S)h+=S.h;return *this;1、模拟人脑神经网络的神经元结构模型如下图所示:Xu其中,xi表示输入信号,wi表示输入信号的加权系数,y表示神经元的输出,它们的之间的关系为:1 J2,x= Xi,X2,HI Xny = f x =exp -0“ Xi - Wi_ 2- i 1这里,汇表示各项的和,exp (z)为求z的自然指数值ex的函数,包含在头文件 m

16、ath.h 中,其函数原型为double exp(double z)。试定义一个NN类实现上述模型。具体要求如下:1)私有成员float x5 , w5,dt :数组x和数组w分别存放输入信号 xi及其加权系数 wi;dt存放非零参数 dodouble y:神经元的突出。2)公有成员:NN (float t, float d )用数组t初始化加权系统 wi,用d初始化dt。 void fun(float t):用数组t初始化xi,并根据上述公式计算 y的值。 void print():输出输入信号和输出信号的值在主函数中,用输入信号1.2, 3.5,2.3,3.2,2.8 以及加权系数 o.5

17、,0.8 , 1.2 ,1.8 , 1.1 对该类进行测试。#include<iostream.h>#include<math.h> class NNfloat x5,w5,dt;double y;public:NN(float t,float d);/用数组t初始化加权系统wi,用d初始化dt。void fun(float t); /用数组t初始化xi,并根据上述公式计算 y的值。void print();输出输入信号和输出信号的值;void main()float a5=1.2,3.5,2.3,3.2,2.8;float b5=0.5,0.8,1.2,1.8,1.1

18、;NN t(b,0.2);t.fun(a);t.print();NN:NN(float t,float d) for(int i=0;i<5;i+) wi=ti; dt=d;void NN:fun(float t) for(int i=0;i<5;i+) xi=ti;double n=0.0;for(int i=0;i<5;i+) n+=(xi-wi)*(xi-wi);y=exp(-n/(2*dt*dt);void NN:print() cout<<"xi=" for(int i=0;i<5;i+) cout<<xi<&

19、lt;''cout<<endl;cout<<"y="<<y<<endl;2、编程题已知由一个数组派生出另一个数组的派生规则如下:假定原始数组为a10,新数组为b10,则bi的值为数组a中大于ai的元素的个数。例如,对于说明“inta尸1,2,3,4,5;int b5;",其中a1=2,数组a中有3个元素比a1大,则b1=3。试建立一个实现此功能 的类ARRAY。具体要求如下:1)私有数据成员。int a10,b10 ; a存放原始数组,b存放派生数组。2)公有成员函数。构造函数ARRAY (int d

20、ata10);初始化成员数组a。void process();由数组a根据上述派生类规则,用循环语句计算数组b的各元素。void print();屏幕显示数组 a和b。#include<iostream.h>class ARRAY int a10,b10;public:ARRAY(int data10);/ 初始化成员数组 a 。void process();由数组a根据上述派生类规则,用循环语句计算数组b的各元素。void print( );/屏幕显示数组 a和b。; void main()int a尸7,4,9,23,56,44,18,33,21,17;ARRAY array(

21、a);cess();array.print(); ARRAY:ARRAY(int data10)for(int i=0;i<10;i+)ai=datai;bi=0; void ARRAY:process( )for(int i=0;i<10;i+)for(int k=0;k<10;k+) if(ak>ai) bi+;void ARRAY:print( )cout<<"a10="for(int i=0;i<10;i+)cout<<ai<<' 'cout<<endl;

22、cout<<"b10="for(i=0;i<10;i+)cout<<bi<<''cout<<endl; 3、编程题:1)实现描述超市的的类 Suppermacket类,记录系统中现有商品(用指针实现),定义增 加商品的函数 Append ,删除商品的函数 Delete,查询商品的函数 Query,并显示查询结 果;2)定义商品类Goods,具有商品名称Name,商品价格Price,商品数量number等属性, 操彳Sale (销售商品,余额不足时给予提示)、 Add (商品上架操作)和 ShowMe (显

23、 本商品信息)。3)编写main函数,测试以上所要求的各种功能,完成商品的增加、删除和查询商品, 以及商品销售和商品上架的操作。4)可以利用对象成员来实现。#include<iostream.h>#include<string.h>class Suppermacket;class Goodschar name10;int Price;int number;public:Goods()strcpy(name,"");Price=0;number=0;void Sale(int n);void Add();void ShowME()cout<<

24、;"商品:"<<name<<",价格:"<<Price<<",有"<<number<<"件。n'n"friend Suppermacket;class SuppermacketGoods *PGoods;int num;public:Suppermacket(int n=10)PGoods=new Goodsn;num=n;void Append();void Delete();void Query();Suppermacket()de

25、lete 口 PGoods;void main()Suppermacket A(3);A.Append();A.Append();A.Delete();A.Query();void Suppermacket:Append()for(int i=0;i<num;i+)if(PGoodsi.number=0)PGoodsi.Add();PGoodsi.ShowME(); return;cout<<"没有空货架上货了!n"void Suppermacket:Delete()char name10;int n;cout<<"请输入需要销售商品

26、名称和数量 cin>>name>>n;for(int i=0;i<num;i+)if(strcmp(PG,name)=0)PGoodsi.Sale(n);return;cout<<"查无此商品!n"void Suppermacket:Query()char name10;cout<<"请输入需要查询的商品名称 cin>>name;for(int i=0;i<num;i+)if(strcmp(PG,name)=0)PGoodsi.ShowME();return;cout<<"查无此商品!n"void Goods:Sale(int n) if(n<number)number-=n;ShowME();elsecout<<"商品数量不够,无法销售!n"void Goods:Add()cout<<"请输入上架的商品名称、价格及数量:"cin>>name>>Price>>numb

温馨提示

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

评论

0/150

提交评论