Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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+;中添加数组的整数失败+;_C++_Arrays_Function_Oop_Object - Fatal编程技术网

C++ 尝试在函数C+;中添加数组的整数失败+;

C++ 尝试在函数C+;中添加数组的整数失败+;,c++,arrays,function,oop,object,C++,Arrays,Function,Oop,Object,我正在写一个程序来计算一个学生的5分 我已成功读取名为input()的对象函数中的5个整数,该函数将值分配给名为scores的私有int[]数组 但是,我无法从calculateTotalScore()函数返回总和 当我尝试运行Eclipse编译器时,使用我为分数选择的5个整数,它给出的输出如下: 40 60 80 90 22 它输出我给它的数字,但它不做任何整数加法 #include <iostream> using namespace std; class Student {

我正在写一个程序来计算一个学生的5分

我已成功读取名为
input()
的对象函数中的5个整数,该函数将值分配给名为
scores
的私有
int[]
数组

但是,我无法从
calculateTotalScore()
函数返回总和

当我尝试运行Eclipse编译器时,使用我为
分数
选择的5个整数,它给出的输出如下:

40 60 80 90 22
它输出我给它的数字,但它不做任何整数加法

#include <iostream>
using namespace std;

class Student {
private:
    int scores[5];
    int sum;
public:
    void input();
    int calculateTotalScore();
};

void Student::input() {
    for (int i = 0; i < sizeof(scores) / sizeof(int); i++) {
        int grade;
        cout << "Enter your score" << endl;
        cin >> grade;
        scores[i] = grade;
    }
    //checking that the array are being stored.
    for (int i=0; i < sizeof(scores) / sizeof(int);i++){
        cout <<scores[i] << " " << flush;
    }
    cout << endl;
}

// returns the sum of the students scores
int Student::calculateTotalScore(){

    for (int i=0; i < sizeof(scores) / sizeof(int);i++){
        sum += scores[i];
    }
    return sum;
    //Check that the numbers are adding up correctly
    cout << sum;
}

int main() {

    Student Kristen;
    Kristen.input();
    Kristen.calculateTotalScore();
    return 0;
}
#包括
使用名称空间std;
班级学生{
私人:
智力得分[5];
整数和;
公众:
无效输入();
int calculateTotalScore();
};
void Student::input(){
对于(int i=0;icout您看到的输出来自
input()
中的
cout
语句,这就是为什么您会看到您键入的所有数字

calculateTotalScore()
不会向
cout
输出任何内容,因为它
在到达代码中的该点之前返回
s。无法访问
cout
语句。编译器应就此向您发出警告

calculateTotalScore()
根本不应该尝试输出到
cout
。最好通过
main()
来完成,其中
calculateTotalScore()
向其返回一个值:

int Student::calculateTotalScore(){
    int sum = 0;
    for (int i=0; i < sizeof(scores) / sizeof(int);i++){
        sum += scores[i];
    }
    return sum;
}

int main(){
    ...
    cout << Kristen.calculateTotalScore();
    ...
}

在真实世界中,学生可能有不同的分数,所以考虑使用<代码> STD::向量<代码>,而不是固定的<代码> int []/Cord>。

< P>你所看到的输出是从<代码> CUT< /COD>语句中的<代码> INSUTPUTE()/代码>,这就是为什么你看到所有你输入的数字。

int Student::calculateTotalScore(){

for (int i=0; i < sizeof(scores) / sizeof(int);i++){
    sum += scores[i];
}
return sum;  <- Code returns to previous call

//Check that the numbers are adding up correctly
cout << sum; <- Code never reaches this point as it always returns
calculateTotalScore()
不会向
cout
输出任何内容,因为它
在到达代码中的该点之前返回
s。无法访问
cout
语句。编译器应就此向您发出警告

calculateTotalScore()
根本不应该尝试输出到
cout
。最好通过
main()
来完成,其中
calculateTotalScore()
向其返回一个值:

int Student::calculateTotalScore(){
    int sum = 0;
    for (int i=0; i < sizeof(scores) / sizeof(int);i++){
        sum += scores[i];
    }
    return sum;
}

int main(){
    ...
    cout << Kristen.calculateTotalScore();
    ...
}

在真实世界中,学生可能有不同的分数,所以考虑使用<代码> STD::向量< /代码>,而不是固定的<代码> INT[]/COD> .< /P> <代码> int学生::CaltualToTaleSCORE()

int Student::calculateTotalScore(){

for (int i=0; i < sizeof(scores) / sizeof(int);i++){
    sum += scores[i];
}
return sum;  <- Code returns to previous call

//Check that the numbers are adding up correctly
cout << sum; <- Code never reaches this point as it always returns
对于(int i=0;iint学生::calculateTotalScore(){ 对于(int i=0;i返回总和;在打印总和之前,您将从
calculateTotalScore
返回。投票以打字错误结束。突击测验:在您尝试添加所有内容之前,
sum
的初始值是多少?是0吗?是42吗?它是生命、宇宙和所有内容的答案吗?并且
sum
不应成为
Stud的成员ent
,但是一个局部变量
calculateTotalScore
。这是在调试器中单步执行代码时很容易发现的事情之一。@SamVarshavchik好的,我已将“sum”初始化为0,现在它给了我正确的输出。在打印sum之前,您将从
calculateTotalScore
返回。Voting以打字错误结束。突击测验:在你尝试添加所有内容之前,
sum
的初始值是多少?它是0吗?它是42吗?它是生命、宇宙和一切的答案吗?而且
sum
不应该是
学生的成员,而应该是
calculateTotalScore
的局部变量。这是在调试器中分步执行代码是很容易的。@SamVarshavchik好的,我已经将“sum”初始化为0,现在它给了我正确的输出。