C++实验类和对象普通数学题计算.docx

上传人:b****6 文档编号:7328643 上传时间:2023-01-23 格式:DOCX 页数:8 大小:40.91KB
下载 相关 举报
C++实验类和对象普通数学题计算.docx_第1页
第1页 / 共8页
C++实验类和对象普通数学题计算.docx_第2页
第2页 / 共8页
C++实验类和对象普通数学题计算.docx_第3页
第3页 / 共8页
C++实验类和对象普通数学题计算.docx_第4页
第4页 / 共8页
C++实验类和对象普通数学题计算.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

C++实验类和对象普通数学题计算.docx

《C++实验类和对象普通数学题计算.docx》由会员分享,可在线阅读,更多相关《C++实验类和对象普通数学题计算.docx(8页珍藏版)》请在冰豆网上搜索。

C++实验类和对象普通数学题计算.docx

C++实验类和对象普通数学题计算

实验报告

实验九类和对象

(1)

一、实验目的

1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;

2.掌握类对象的定义;

3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;

4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数。

二、实验内容

1.输入以下程序,并写出程序的输出结果。

定义一个描述三角形的类Tri,具体要求如下:

(1)私有数据成员

doublea,b,c:

三角形的三边。

(2)公有成员函数

Tri(doublex,doubley,doublez):

构造函数,用x,y,z初始化a,b,c,对指定的对象初始化。

doublePeri():

求三角形的周长。

doubleArea():

求三角形的面积。

voidShow():

输出三角形的各种参数(边长、周长、面积)。

(3)在主程序中定义两个三角形对象:

三角形tri1,边长分别为3,4,5,三角形tri2,边长分别为5,6,7,用构造函数初始化这两个对象a,然后输出这两个三角形的各种参数。

将文件命名为。

#include<>

#include<>

classTri

{doublea,b,c;

根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。

试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。

当找到第一组连续n个合数后,即停止查找。

具体要求如下:

(1)私有数据成员:

intn:

存放满足条件的连续自然数的个数。

int*p:

根据n的值申请一个动态数组用来存放求出的满足条件的n个自然数。

(2)公有成员函数。

NUM(intn1):

构造函数,用n1初始化n,根据n的值申请动态数组空间,使p指向该动态数组空间。

intyes(intx):

判定x是否为合数。

如果是,返回1,否则返回0。

voidfun():

从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次放入动态数组。

voidprint():

输出满足条件的n个合数。

~NUM():

析构函数,释放动态数组所占用的存储空间。

(3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。

然后通过对象num调用成员函数求出10个连续的合数,并输出计算结果。

将文件命名为。

#include<>

classNUM{

仿照样例程序编写程序

定义一个字符串类STR,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。

例如,若字符串为"cocoon",删除重复出现的字符后,其结果是字符串"con"。

具体要求如下:

(1)私有数据成员:

char*s1:

指向原字符串,存放字符串的空间需动态分配。

char*s2:

指向结果字符串,存放字符串的空间需动态分配。

(2)公有成员函数

STR(char*str):

构造函数,用str初始化s1,动态分配s1和s2指向的空间。

voiddelsame():

删除重复出现的字符。

voidshow():

输出原字符串和结果字符串。

~STR():

析构函数,释放动态分配的存储空间。

(3)在主函数中定义一个STR类的对象test,用字符串"concoon"初始化test,通过调用成员函数完成删除工作,输出删除前后的两个字符串。

代码:

#include

#include

usingnamespacestd;

classSTR

{

private:

char*s1;

char*s2;

public:

STR(char*str):

s1(str)

{

s2=newchar[strlen(str)+1];

}

进阶提高

圆盘找数问题。

定义一个圆盘类Circle,用20个随机数组成一个圆(首尾相接),分别求出连续的四个数之和为最大的四个数及其和值)以及连续的四个数之和为最小的四个数(输出整个数列、最大、最小的四个数及其和值。

具体要求如下:

(1)私有数据成员

intnum[20]:

存放生成的20个随机数

intMax[4]:

存放20个随机数中连续4个数之和中最大的那4个连续的数

intMin[4]:

存放20个随机数中连续4个数之和中最小的那4个连续的数

intsum_max:

存放20个随机数中连续4个数之和中最大的和

intsum_min:

存放20个随机数中连续4个数之和中最小的和

(2)公有成员函数:

Circle():

构造函数,用20个随机数初始化圆盘中的num数组

voidFind_Max():

圆盘类的主要操作,寻找符合条件(和为最或最小)的连续的4个数

voidShow(void):

输出圆盘类的整个数列,最大、最小的四个数及其和值

(3)在主函数中定义一个Circle类的对象cir,用20个随机数初始化该对象cir,通过调用成员函数完成题目要求的任务。

将文件命名为。

要求:

代码:

#include

#include

usingnamespacestd;

classCircle

{

public:

Circle();

//圆盘类的主要操作,寻找符合条件(和为最或最小)的连续的4个数

voidFind_Max();

voidFind_Min();

voidShow(void);//输出圆盘类的整个数列,最大、最小的四个数及其和值

private:

intnum[20];//:

存放生成的20个随机数

intMax[4];//:

存放20个随机数中连续4个数之和中最大的那4个连续的数

intMin[4];//:

存放20个随机数中连续4个数之和中最小的那4个连续的数

intsum_max;//:

存放20个随机数中连续4个数之和中最大的和

intsum_min;//:

存放20个随机数中连续4个数之和中最小的和

};

Circle:

:

Circle()

{

srand(time(0));

for(inti(0);i<20;i++)

num[i]=rand();

}

voidCircle:

:

Show(void)

{

inti;

cout<<"圆盘的所有数为:

"<

for(i=0;i<20;i++)

cout<

cout<

cout<<"圆盘的最大连续4个数为:

"<

for(i=0;i<4;i++)

cout<

cout<

cout<<"其和值为:

"<

cout<<"圆盘的最小连续4个数为:

"<

for(i=0;i<4;i++)

cout<

cout<

cout<<"其和值为:

"<

}

voidCircle:

:

Find_Max()

{

intmax_index=0;

for(inti(0);i<20;i++)

{

intt=0;

for(intk=0;k<4;k++)//连续4个数之和

{

intn;

n=(i+k)%20;

t+=num[n];

}

if(i==0)

{

sum_max=t;

}

else

if(sum_max

{

sum_max=t;

max_index=i;

}

}

for(intk=0;k<4;k++)

{

intn;

//存放20个随机数中连续4个数之和中最大的那4个连续的数

n=(max_index+k)%20;

Max[k]=num[n];

}

}

voidCircle:

:

Find_Min()

{

intmin_index=0;

for(inti(0);i<20;i++)

{

intt=0;

for(intk=0;k<4;k++)//连续4个数之和

{

intn;

n=(i+k)%20;

t+=num[n];

}

if(i==0)

{

sum_min=t;

}

else

if(sum_min>t)

{

sum_min=t;

min_index=i;

}

}

for(intk=0;k<4;k++)

{

//存放20个随机数中连续4个数之和中最小的那4个连续的数

intn;

n=(min_index+k)%20;

Min[k]=num[n];

}

}

intmain()

{

Circle*cir=newCircle();

cir->Find_Max();

cir->Find_Min();

cir->Show();

deletecir;

cir=0;

return0;

}程序的输出为

三、实验总结

本次实验难度非常的大。

首先指针使用不熟练,使用经常错误。

逻辑混乱错误。

类的方面要多多注意私有成员是不可以直接访问。

只能用类内的方法访问才行!

总之要多多努力才行!

指针方面太抽象了,一开始是能看懂,用起来真是一塌糊涂!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1