该程序没有正确显示相应的字母格栅
The program does not show the corresponding letters grates correctly
这个程序要求学生的分数,然后它应该为每个年级和平均价格给出相应的字母。问题是:代码只给我最后一个等级的字母等级。无法弄清楚如何解决它。有人可以帮我导航吗?
#include <iostream>
using namespace std;
char *calcGrade(const int *, int);
int main()
{
char *letterScores = nullptr;
double *average1 = nullptr;
const int size= 6;
int *studentScore = nullptr; // To dynamically allocate an array
double total = 0.0; // Accumulator
double average; // To hold average sales
int count;
studentScore = new int[size];
cout << "Enter the student's score" << endl;
for (count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cin >> studentScore[count];
while ((studentScore[count] <=0) || (studentScore[count] > 100))
{
cout << "Zero or negative numbers and higher 100 not accepted.\n";
cout << "Test Score #" << (count + 1) << ": ";
cin >> studentScore[count];
}
letterScores = calcGrade(studentScore, size);
}
for (int count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cout << studentScore[count] << " "<< letterScores[count] << endl;
}
cout << "This is average score " << *average1 << endl;
return 0;
}
char *calcGrade(const int *stScore, int size){
char *arr = nullptr;
arr = new char[size];
char letterGrade;
for (int count = 0; count < size; count++)
if ((stScore[count] > 90) && (stScore[count] <= 100))
letterGrade = 'A';
else if (stScore[count] > 80 && stScore[count] <= 90)
letterGrade = 'B';
else if (stScore[count] > 70 && stScore[count] <= 80)
letterGrade = 'C';
else if (stScore[count] > 60 && stScore[count] <= 70)
letterGrade = 'D';
else if (stScore[count] >= 0 && stScore[count] <= 60)
letterGrade = 'F';
else{
cout << "Logic error." << endl;
}
for (int count = 0; count < size; count++)
{
arr[count] = stScore[count];
arr[count] = letterGrade;
}
return arr;
}
```
在每个循环中执行此操作:
letterScores = calcGrade(studentScore, size);
这意味着每次你 运行 它时,letterScores 指向最近学生的分数,并且你已经排除了所有以前的学生。
您可以将数据存储在 std::vector 中,然后遍历向量,转储每个数据。
您的 calcGrade
函数有两个问题:
您为每个学生计算了正确的字母等级,然后您尝试存储所有这些。但是您需要在计算时存储每一个。 calcGrade
.
中不应有两个 for
循环
我不知道你怎么想的,但是第二行覆盖了第一行,导致第一行什么都不做:
arr[count] = stScore[count];
arr[count] = letterGrade;
#include <iostream>
using namespace std;
char *calcGrade(const int *, int);
int main()
{
char *letterScores = nullptr;
double *average1 = nullptr;
const int size= 6;
int *studentScore = nullptr; // To dynamically allocate an array
double total = 0.0; // Accumulator
double average; // To hold average sales
int count;
studentScore = new int[size];
cout << "Enter the student's score" << endl;
for (count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cin >> studentScore[count];
while ((studentScore[count] <=0) || (studentScore[count] > 100))
{
cout << "Zero or negative numbers and higher 100 not accepted.\n";
cout << "Test Score #" << (count + 1) << ": ";
cin >> studentScore[count];
}
letterScores = calcGrade(studentScore, size);
}
for (int count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cout << studentScore[count] << " "<< letterScores[count] << endl;
}
cout << "This is average score " << *average1 << endl;
return 0;
}
char *calcGrade(const int *stScore, int size){
char *arr = nullptr;
arr = new char[size];
char letterGrade;
for (int count = 0; count < size; count++){
if ((stScore[count] > 90) && (stScore[count] <= 100))
letterGrade = 'A';
else if (stScore[count] > 80 && stScore[count] <= 90)
letterGrade = 'B';
else if (stScore[count] > 70 && stScore[count] <= 80)
letterGrade = 'C';
else if (stScore[count] > 60 && stScore[count] <= 70)
letterGrade = 'D';
else if (stScore[count] >= 0 && stScore[count] <= 60)
letterGrade = 'F';
else cout << "Logic error." << endl;
arr[count] = letterGrade;
}
return arr;
}
这个程序要求学生的分数,然后它应该为每个年级和平均价格给出相应的字母。问题是:代码只给我最后一个等级的字母等级。无法弄清楚如何解决它。有人可以帮我导航吗?
#include <iostream>
using namespace std;
char *calcGrade(const int *, int);
int main()
{
char *letterScores = nullptr;
double *average1 = nullptr;
const int size= 6;
int *studentScore = nullptr; // To dynamically allocate an array
double total = 0.0; // Accumulator
double average; // To hold average sales
int count;
studentScore = new int[size];
cout << "Enter the student's score" << endl;
for (count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cin >> studentScore[count];
while ((studentScore[count] <=0) || (studentScore[count] > 100))
{
cout << "Zero or negative numbers and higher 100 not accepted.\n";
cout << "Test Score #" << (count + 1) << ": ";
cin >> studentScore[count];
}
letterScores = calcGrade(studentScore, size);
}
for (int count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cout << studentScore[count] << " "<< letterScores[count] << endl;
}
cout << "This is average score " << *average1 << endl;
return 0;
}
char *calcGrade(const int *stScore, int size){
char *arr = nullptr;
arr = new char[size];
char letterGrade;
for (int count = 0; count < size; count++)
if ((stScore[count] > 90) && (stScore[count] <= 100))
letterGrade = 'A';
else if (stScore[count] > 80 && stScore[count] <= 90)
letterGrade = 'B';
else if (stScore[count] > 70 && stScore[count] <= 80)
letterGrade = 'C';
else if (stScore[count] > 60 && stScore[count] <= 70)
letterGrade = 'D';
else if (stScore[count] >= 0 && stScore[count] <= 60)
letterGrade = 'F';
else{
cout << "Logic error." << endl;
}
for (int count = 0; count < size; count++)
{
arr[count] = stScore[count];
arr[count] = letterGrade;
}
return arr;
}
```
在每个循环中执行此操作:
letterScores = calcGrade(studentScore, size);
这意味着每次你 运行 它时,letterScores 指向最近学生的分数,并且你已经排除了所有以前的学生。
您可以将数据存储在 std::vector 中,然后遍历向量,转储每个数据。
您的 calcGrade
函数有两个问题:
您为每个学生计算了正确的字母等级,然后您尝试存储所有这些。但是您需要在计算时存储每一个。
中不应有两个calcGrade
.for
循环我不知道你怎么想的,但是第二行覆盖了第一行,导致第一行什么都不做:
arr[count] = stScore[count]; arr[count] = letterGrade;
#include <iostream>
using namespace std;
char *calcGrade(const int *, int);
int main()
{
char *letterScores = nullptr;
double *average1 = nullptr;
const int size= 6;
int *studentScore = nullptr; // To dynamically allocate an array
double total = 0.0; // Accumulator
double average; // To hold average sales
int count;
studentScore = new int[size];
cout << "Enter the student's score" << endl;
for (count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cin >> studentScore[count];
while ((studentScore[count] <=0) || (studentScore[count] > 100))
{
cout << "Zero or negative numbers and higher 100 not accepted.\n";
cout << "Test Score #" << (count + 1) << ": ";
cin >> studentScore[count];
}
letterScores = calcGrade(studentScore, size);
}
for (int count = 0; count < size; count++)
{
cout << "Student " << (count + 1) << ": ";
cout << studentScore[count] << " "<< letterScores[count] << endl;
}
cout << "This is average score " << *average1 << endl;
return 0;
}
char *calcGrade(const int *stScore, int size){
char *arr = nullptr;
arr = new char[size];
char letterGrade;
for (int count = 0; count < size; count++){
if ((stScore[count] > 90) && (stScore[count] <= 100))
letterGrade = 'A';
else if (stScore[count] > 80 && stScore[count] <= 90)
letterGrade = 'B';
else if (stScore[count] > 70 && stScore[count] <= 80)
letterGrade = 'C';
else if (stScore[count] > 60 && stScore[count] <= 70)
letterGrade = 'D';
else if (stScore[count] >= 0 && stScore[count] <= 60)
letterGrade = 'F';
else cout << "Logic error." << endl;
arr[count] = letterGrade;
}
return arr;
}