不了解被问及的内容以及如何输入内容?

时间:2015-03-08 00:35:37

标签: c++ arrays pointers allocation

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

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

(我这样做了吗?)

第四个成员变量是一个双倍保持测验成绩的平均值。

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

int是测验成绩的数量

构造函数使用new运算符为测验等级数组分配内存。

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

该类需要通常的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;
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则成员grades保存成员pquiz指向的数组的长度。每当设置grades时,pquiz也必须反映新的更改(应删除旧数组,应创建新数组)。在构造函数中只能创建数组。在setGrades()中必须删除旧的并创建新的。

由于成员pquiz由类TestScore控制(或拥有),因此删除对象TestScore时(或在我们的术语中)应该删除它是合乎逻辑的&#34;当它超出范围&#34;)。这是在类析构函数中完成的,您应该将其添加到类中。

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