Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不理解被询问的内容以及如何键入?_C++_Arrays_Pointers_Allocation - Fatal编程技术网

C++ 不理解被询问的内容以及如何键入?

C++ 不理解被询问的内容以及如何键入?,c++,arrays,pointers,allocation,C++,Arrays,Pointers,Allocation,我很难理解这个程序的问题的某些部分,我想知道为什么以及如何键入程序。以下是我无法理解的部分: 第三个成员变量是指向双精度pquiz的指针。这将用于动态分配一个数组,该数组将保存学生的测验成绩 (我做得对吗?) 第四个成员变量是一个包含测验分数平均值的双精度变量 该类应该有一个单参数构造函数,该构造函数接受int,并将动态分配双测验分数数组。或者该类可以>具有一个双参数构造函数,该构造函数同时接受字符串和int int是测验分数 构造函数使用新运算符为测验分数数组分配内存 如果有两个参数,则字符串

我很难理解这个程序的问题的某些部分,我想知道为什么以及如何键入程序。以下是我无法理解的部分:

第三个成员变量是指向双精度pquiz的指针。这将用于动态分配一个数组,该数组将保存学生的测验成绩

(我做得对吗?)

第四个成员变量是一个包含测验分数平均值的双精度变量

该类应该有一个单参数构造函数,该构造函数接受int,并将动态分配双测验分数数组。或者该类可以>具有一个双参数构造函数,该构造函数同时接受字符串和int

int是测验分数

构造函数使用新运算符为测验分数数组分配内存

如果有两个参数,则字符串是学生的姓名

该类需要常用的mutator、accessor函数和析构函数

该类还有一个函数average(),用于计算pquiz指向的数组中所有测验分数的平均值。它返回两倍的平均值

我想打印一个学生的名字,学生参加的考试次数,以及平均成绩。以下是我目前的计划:

#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构造函数只能创建数组。In
setGrades()
必须删除旧代码并创建新代码

因为成员
pquiz
由类
TestScore
控制(或拥有),所以当对象
TestScore
被删除时(或者用我们的行话“当它超出范围时”)删除它是合乎逻辑的。这是在类析构函数中完成的,您应该将它添加到类中


根据文本,应该还有一个成员函数,
average()
,计算平均值并将值存储在成员
average
中。为了您的理智起见,应重命名此成员。

听起来像是作业解释问题。您不明白第一句话的哪一部分?如果您要询问有关家庭作业的问题,请花时间询问,删除
getline
调用
TestScore::setName
。它没有任何用途。