gpt4 book ai didi

c++ - 阵列无法过早输出一行

转载 作者:行者123 更新时间:2023-11-28 05:15:29 25 4
gpt4 key购买 nike

我正在编写“面向科学家和工程师的 C++”类(class)的代码。我们读了一半书。我一直在浏览论坛,在那里找到了很多帮助。感谢大家提供这个惊人的资源。我想向小组提出我的第一个问题以供分析。

该项目的目标是

  1. 创建一个 60 行 7 列的数组。
  2. 它必须能够给每个学生 4 个成绩,给他们一个简单的平均数和一个加权平均数。
  3. 输出成绩和平均分。

我把所有东西都放在一起,它几乎完成了。当我看到即使只输入 6 个学生的成绩,它也会输出 60 行 0 时,我有点雄心勃勃。如果有零,我终于让它停止打印成绩,但现在它停止打印短一行。

例如,如果我输入 5 个学生的成绩,它只会输出第 4 个学生并丢弃第 5 个学生。一旦我解决了这个问题,我就完成了。我将添加一个 switch 语句,允许讲师查看他想要的初始输入或运行我的代码。

#include <iostream>
#include <cmath>
using namespace std;

int grade_Calc(int sg[][5]); //initiates function grade_Calc
const int MAXROWS = 60;
const int MAXCOLS = 5;
int grades [MAXROWS][MAXCOLS];
int i,j;
char answer;

int main()
{
////////ENTER VALUES/GRADES/////
i=1; //ROW LOOP
while (i<MAXROWS)
{
grades [i][0] = i;
cout << "Please enter 4 grades for student: " << grades [i][0] << endl;
// COLUMN LOOP
for (j=1; j<MAXCOLS; j++)
{
cout << "Grade: " << j << " is: ";
cin >> grades [i][j];
}
/////enter another grade?/////

cout << "Would you like to enter another grade? " << endl << endl;
cout << "Enter N for no or Y for yes. " << endl << "Y or NO : ";
cin >> answer;
cout << endl;
if (answer == 'N' || answer == 'n')
break;
else if (answer == 'Y' || answer =='y')
i++;
}


grade_Calc(grades); //passes array grades into function grade_Calc
return 0;
}


int grade_Calc(int sg[][5])
{
int avg_sum = 0; //initializes avg_sum
double grades_weight = 0.0; //initializes grades_weight
double avg_simp = 0.0; //initializes avg_simp


cout << "Stdnt" << "\t" << "Grd1" << "\t" << "Grd2" << "\t" << "Grd3" << "\t" << "Grd4" << "\t" << "Avg1" << "\t" << "Avg2" << endl; //outputs column headings
for (int i = 1; i < MAXROWS; i++) //array rows
{
if (grades [i][j] <= 0)
{
break;
}
else
{
for (int j = 0; j < MAXCOLS; j++) // array columns
{
cout << grades[i][j] << "\t\t"; //outputs array

if (j != 0) //ignores student number
{
avg_sum += grades[i][j]; //adds grades for mean

if ((j == 1) || (j == 4)) //if-else that calculates grades_weight
{
grades_weight += (0.2 * grades [i][j]);
}
else
{
grades_weight += (0.3 * grades [i][j]);
}
}
}

avg_simp = (avg_sum / 4.0); //calculates simple_avg (arithmetic mean)



cout << "\t" << avg_simp << "\t" << grades_weight; //outputs simple_avg in Avg1 column and weighted_grade in Avg2 column

avg_sum = 0;
grades_weight = 0.0;
cout << endl;
}
}



return 0;


}

最佳答案

数组在 C++ 中是零索引的。

将你的开始更改为 i=0;

也在你的迭代中:

for (j=1; j<MAXCOLS; j++)

j 也应该从 0 开始。

(在你的代码中继续这个逻辑......看起来还有几个地方。)

关于c++ - 阵列无法过早输出一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42744710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com