C++ 不理解被询问的内容以及如何键入?
我很难理解这个程序的问题的某些部分,我想知道为什么以及如何键入程序。以下是我无法理解的部分: 第三个成员变量是指向双精度pquiz的指针。这将用于动态分配一个数组,该数组将保存学生的测验成绩 (我做得对吗?) 第四个成员变量是一个包含测验分数平均值的双精度变量 该类应该有一个单参数构造函数,该构造函数接受int,并将动态分配双测验分数数组。或者该类可以>具有一个双参数构造函数,该构造函数同时接受字符串和int int是测验分数 构造函数使用新运算符为测验分数数组分配内存 如果有两个参数,则字符串是学生的姓名 该类需要常用的mutator、accessor函数和析构函数 该类还有一个函数average(),用于计算pquiz指向的数组中所有测验分数的平均值。它返回两倍的平均值 我想打印一个学生的名字,学生参加的考试次数,以及平均成绩。以下是我目前的计划:C++ 不理解被询问的内容以及如何键入?,c++,arrays,pointers,allocation,C++,Arrays,Pointers,Allocation,我很难理解这个程序的问题的某些部分,我想知道为什么以及如何键入程序。以下是我无法理解的部分: 第三个成员变量是指向双精度pquiz的指针。这将用于动态分配一个数组,该数组将保存学生的测验成绩 (我做得对吗?) 第四个成员变量是一个包含测验分数平均值的双精度变量 该类应该有一个单参数构造函数,该构造函数接受int,并将动态分配双测验分数数组。或者该类可以>具有一个双参数构造函数,该构造函数同时接受字符串和int int是测验分数 构造函数使用新运算符为测验分数数组分配内存 如果有两个参数,则字符串
#include <iostream>
#include <string>
using namespace std;
class TestScore{
private:
string name;
int grades;
double *pquiz;
double average;
public:
TestScore();
void setName(string);
void setGrades(int);
void setAverage(double);
string getName();
int getGrades();
double getPquiz();
double getAverage();
};
TestScore::TestScore()
{
name="?";
grades=0;
pquiz=0;
average=0;
}
void TestScore::setName(string name1)
{
name=name1;
getline(cin,name1);
}
void TestScore::setGrades(int grades1)
{
grades=grades1;
}
void TestScore::setAverage(double average1)
{
average=average1;
}
string TestScore::getName()
{
return name;
}
int TestScore::getGrades()
{
return grades;
}
double TestScore::getAverage()
{
return average;
}
int main()
{
TestScore exam;
TestScore *ts=&exam;
string name;
int grade;
double *pquiz;
double average;
double total=0.0;
int count;
cout<<"Enter student name: ";
exam.setName(name);
cout<<"How many quizzes are there? ";
exam.setGrades(grade);
cin>>grade;
pquiz=new double[grade];
for(count=0; count<grade; count++)
{
cout<<"Quiz "<<(count+1)<<": ";
cin>>pquiz[count];
}
for(count=0; count<grade; count++)
{
total+=pquiz[count];
}
average=total/grade;
cout<<exam.getName()<<" has an average of "<<average<<endl;
delete [] pquiz;
pquiz=0;
return 0;
}
#包括
#包括
使用名称空间std;
班级考试成绩{
私人:
字符串名;
国际职系;
双*pquiz;
双倍平均;
公众:
TestScore();
void setName(字符串);
无效等级(int);;
平均值(双倍);
字符串getName();
int getGrades();
双getPquiz();
double getAverage();
};
TestScore::TestScore()
{
name=“?”;
等级=0;
pquiz=0;
平均值=0;
}
void TestScore::setName(字符串名称1)
{
name=name1;
getline(cin,名称1);
}
void TestScore::setGrades(int grades1)
{
年级=1年级;
}
void TestScore::setAverage(双平均值1)
{
平均值=平均值1;
}
字符串TestScore::getName()
{
返回名称;
}
int TestScore::getGrades()
{
返回等级;
}
double TestScore::getAverage()
{
收益率平均值;
}
int main()
{
考试成绩;
TestScore*ts=&test;
字符串名;
国际等级;
双*pquiz;
双倍平均;
双倍合计=0.0;
整数计数;
cout如果我理解正确,成员grades
持有成员pquiz
指向的数组长度。每当设置grades
时pquiz
也必须反映新的更改(应删除旧数组,应创建新数组)。In构造函数只能创建数组。InsetGrades()
必须删除旧代码并创建新代码
因为成员pquiz
由类TestScore
控制(或拥有),所以当对象TestScore
被删除时(或者用我们的行话“当它超出范围时”)删除它是合乎逻辑的。这是在类析构函数中完成的,您应该将它添加到类中
根据文本,应该还有一个成员函数,average()
,计算平均值并将值存储在成员average
中。为了您的理智起见,应重命名此成员。听起来像是作业解释问题。您不明白第一句话的哪一部分?如果您要询问有关家庭作业的问题,请花时间询问,删除getline
调用TestScore::setName
。它没有任何用途。