




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编写程序提示用户输入一个班级中的学生人数
n,再依次提示用户输入
n
个人在课程
A
中的考试成绩,然后计算出平均值,显示出来。
要求用到第九章中的数组类模板
Array
定义浮点型数组存储考试成绩。姓 名: 马雪峰学 号:专业班级: 计科一班完成日期: 2016
年
6
月
26
日
设计任务编写程序提示用户输入一个班级中的学生人数n,再依次提示用户输入
n
个人在课程
A
中的考试成绩,然后计算出平均值,显示出来。要求用到第九章中的数组类模板
Array
定义浮点型数组存储考试成绩。
目的。会
C++中面向对象的思想。设计流程,编写程序,上机调试去寻找并发现知识的缺陷,并想办法弥补。及用法,数组类模版,运算符重载,多文件结构,成员函数的实现等的熟练运用。
用数组类模板、析构函数、构造函数
、赋值构造函数、运算符重载、指针等语法来完成一个班级在某门课程中考试的平均值的程序。
设计指标:用C++完成一个班级在某门课程中的成绩储存并计算 到数组类模板。输入要求:在程序运行的页面根据提示输入班级学生人数
n,再依次输入每个人在课程A
中的成绩。输出要求:输出
n
个人在课程
A
中的平均成绩。2
设计过程(1)、分析程序的功能:使用户能根据程序提示输入班级学生人数n
和
n
个人在某门课中考试成绩,并能储存成绩然后计算平均值,显示出来。(2)、思考程序要用到的算法原理:使用数组类模板定义浮点型数A
中的总分之比的原理求平均值。(3)、设计程序流程图(见(4)、编写程序(见
使用户能根据程序提示输入班级学生人数n和n个人在某门课中考试成绩,并能储存成绩然后计算平均值,显示出来。
A
中的总分之比的原理求平均值。
开始输
结束输
结束出
输入班级人数
n
和每是i<n否AverScore=TotalScore/n
i++;TotalScore=TotalSc#ifndef
ARRAY_H#define
ARRAY_H#include
<iostream.h>#include
<stdlib.h>#ifndef
NULLconst
int
NULL
=
0;#endifenum
ErrorType//错误类型集合,共有三种类型{invalidArraySize,
memoryAllocationError,
indexOutOfRange};char
*errorMsg[]
={"Invalid
array
size",
"Memory
allocation
error","Invalid
index:
"};template
<class
T>class
Array{private:T*
alist;
//T
类型指针,用于存放动态分配的数组内存首地址int
size;void
Error(ErrorType
error,int
badIndex=0)
const;public:Array(int
sz
=
50);Array(const
Array<T>&
A);~Array(void);//重载"="使数组对象可以整体赋值Array<T>&
operator=
(const
Array<T>&
rhs);T&
operator[](int
i);operator
T*
(void)
const;int
ListSize(void)
const;void
Resize(int
sz);};//以下为类成员函数的实现template
<class
T>void
Array<T>::Error(ErrorType
error,
int
badIndex)
const{cout
<<
errorMsg[error];if
(error
==
indexOutOfRange)cout
<<
badIndex;
//如果是下标越界错,输出错误的下标cout
<<
endl;exit(1);}template
<class
T>Array<T>::Array(int
sz){if
(sz
<=
0)
0,则输出错误信息Error(invalidArraySize);size
=
sz;alist
=
new
T[size];
size
个
T
类型的元素空间if
(alist
==
NULL)
//如果分配内存不成功,输出错误信息Error(memoryAllocationError);}template
<class
T>Array<T>::~Array(void){delete
[]
alist;}template
<class
T>Array<T>::Array(const
Array<T>&
X){//从对象
X
取得数组大小,并赋值给当前对象的成员int
n
=
X.size;size
=
n;alist
=
new
T[n];if
(alist
==
NULL)
//如果分配内存不成功,输出错误信息Error(memoryAllocationError)T*
srcptr
=
X.alist;T*
destptr
=
alist;while
(n--)*destptr++
=
*srcptr++;}//
rhs
赋值template
<class
T>Array<T>&
Array<T>::operator=
(const
Array<T>&
rhs){int
n
=
rhs.size;if
(size
!=
n){delete
[]
alist;alist
=
new
T[n];
//
重新分配
n
个元素的内存if
(alist
==
NULL)Error(memoryAllocationError);size
=
n;
//记录本对象的数组大小}//
从
rhs
向本对象复制元素T*
destptr
=
alist;T*
srcptr
=
rhs.alist;while
(n--)*destptr++
=
*srcptr++;return
*this;}//
重载下标操作符,实现与普通数组一样通过下标访问元素,并且具有越界检查功能template
<class
T>T&
Array<T>::operator[]
(int
n){//
检查下标是否越界if
(n
<
0
||
n
>
size-1)Error(indexOutOfRange,n);//
返回下标为
n
的数组元素return
alist[n];}template
<class
T>Array<T>::operator
T*
(void)
const{//
返回当前对象中私有数组的首地址return
alist;}//取当前数组的大小template
<class
T>int
Array<T>::ListSize(void)
const{return
size;}//
将数组大小修改为sztemplate
<class
T>void
Array<T>::Resize(int
sz){if
(sz
<=
0)Error(invalidArraySize);if
(sz
==
size)return;T*
newlist
=
new
T[sz];if
(newlist
==
NULL)Error(memoryAllocationError);int
n
=
(sz
<=
size) sz
:
size;//
将原有数组中前n
个元素复制到新数组中T*
srcptr
=
alist;T*
destptr
=
newlist;while
(n--)*destptr++
=
*srcptr++;delete[]
alist;alist
=
newlist;size
=
sz;}#endifvoid
main(){int
n;double
AverScore,TotalScore
=
0;cout
<<
cin
>>
n;Array<float>
Score(n);for
(int
i=0;
i<n;
i++){cout
<<
<<
i+1
<<"个学生的课程A
成绩(0~100):";cin
>>
Score[i];TotalScore
+=
Score[i];}AverScore
=
TotalScore/n;cout
<<
<<
AverScore
<<
endl;}3
软件运行或者测试结果若一个班学生人数为A中的考试成绩分别为程序运行结果如图所示:
软件设计过程中遇到的问题以及解决办法在这次设计程序的过程中遇到了许多问题:比如对类模板、数组的内存分配、指针、析构函数等知识掌握不牢固,使得拿到题目无从
指针概解决了。谭浩强着、Visual C++编程之道。
总结这两周的
c++课程设计,时间上说长不长,说短也不短,却让我学到了很多:对很多函数有了新的认识,对c++有了更深刻的了解,增自己曾经不知道或一些不会用的函数,特别是多文件结构,类模板,运算符的重载等;也让我明白了学好c++是多么重要;在自己基础知识掌握不牢固的情况下,要设计一个程序是多么难。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 动力柜施工合同范本
- 公用商业装修合同范本
- 包装供应合同范本
- app合伙合同范本
- 以房换房合同范本
- 上传网贷合同范本
- 包材委托加工合同范本文库
- 2024年日照市某国有企业招聘考试真题
- 2024年青海海南州教育局招聘高中教师考试真题
- Module 2 public holidays unit 2英文版教学设计 2024-2025学年外研版英语九年级上册
- 医保定点纳入预测性研究的报告
- 手术讲解模板单侧肾切除术
- 大学体育-武术散打-教案
- 镇乡自然资源规划所工作职责
- 年终奖计算方案
- 模拟药房实训总结报告
- 人工智能在智能运维中的应用
- 《脑科学基础知识》课件
- 成人四肢血压测量的中国专家共识
- 荣昌坝扶壁式挡土墙施工方案1
- 幼儿园多媒体课件设计与制作第2版(高职学前教育专业)全套教学课件
评论
0/150
提交评论