gpt4 book ai didi

c++ - 我可以使用什么算法来计算有多少学生有相同的分数?

转载 作者:行者123 更新时间:2023-11-27 23:26:20 26 4
gpt4 key购买 nike

我目前正在我的 C++ 类(class)中学习指针。以下代码有点困惑,但我最终明白了,我目前的问题是我的逻辑。

有人告诉我,无需排序或搜索和使用单个索引,我就可以找到分数相同的学生人数,但我终究无法弄清楚。

我将分数存储在 scoresArray 中,元素编号标识它属于哪个学生。

#include <iostream>
using namespace std;

const int maxStudents = 30;
void readScores(double[]);
void gradeCounter(double[],int&,int&,int&,int&,int&);
void sameScore(double[]);

int main()
{
int As = 0, Bs = 0, Cs = 0, Ds = 0, Fs = 0; // Distribution of scores

double scoreArray[maxStudents];
readScores(scoreArray);
gradeCounter(scoreArray, As, Bs, Cs, Ds, Fs);

system ("PAUSE");
return 0;
}


void readScores(double scoreArray[])
{
double *scorePTR;
scorePTR = scoreArray;

for(int count = 0; count < maxStudents; count++)
{
cout<<"Please enter score for student "<<count+1<<" or -999 to end.\n";
cin>>*(scorePTR+count);
if(*(scorePTR+count) == -999)
break;
}
}


void gradeCounter(double scoreArray[],int &As,int &Bs,int &Cs,int &Ds,int &Fs)
{
double *scorePTR2;
scorePTR2 = scoreArray;

for(int count = 0; count < maxStudents; count++)
{
if(scoreArray[count] >= 90)
As+=1;
else if(*(scorePTR2+count) >= 80 && *(scorePTR2+count) < 90)
Bs+=1;
else if(*(scorePTR2+count) >= 70 && *(scorePTR2+count) < 80)
Cs+=1;
else if(*(scorePTR2+count) >= 60 && *(scorePTR2+count) < 70)
Ds+=1;
else if(*(scorePTR2+count) >= 0 && *(scorePTR2+count) < 60)
Fs+=1;
}
}

void sameScore(double scoreArray[])
{

}

最佳答案

您可以创建第二个包含 101 个元素(从 0 到 100)的数组,将其全部初始化为 0,并使用当前学生的分数作为该数组的索引

因此,如果当前学生的分数为 87,那么您会将 this_new_array[87] 递增 1。

最后,索引 X 处的数组将包含得分为 X 的学生数。

关于c++ - 我可以使用什么算法来计算有多少学生有相同的分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218377/

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