C++ 为什么柜台不工作

C++ 为什么柜台不工作,c++,C++,我正试图帮助一个朋友摆脱困境,但我似乎无法得到它,伙计们。我不知道为什么,但有几个变量没有正确显示 我把它推倒在我认为问题所在的地方,但我不知道如何解决它 #include <iostream> #include <fstream> using namespace std; int main() { //declaring variables ifstream myfile("input.txt"); double grades[26]; unsigned scores

我正试图帮助一个朋友摆脱困境,但我似乎无法得到它,伙计们。我不知道为什么,但有几个变量没有正确显示

我把它推倒在我认为问题所在的地方,但我不知道如何解决它

#include <iostream>
#include <fstream>
using namespace std;
int main() 
{
//declaring variables
ifstream myfile("input.txt");
double grades[26];
unsigned scores[8] = {0};




//getting data from text file
    for(int i=0; i<26; i++)
        {
            myfile >> grades[i];
            cin.ignore();


    if((grades[i] >= 175) && (grades[i] <= 200)) scores[7]++; 
    else if(grades[i] >= 150)                    scores[6]++;
    else if(grades[i] >= 125)                    scores[5]++;
    else if(grades[i] >= 100)                    scores[4]++;
    else if(grades[i] >= 75)                     scores[3]++;
    else if(grades[i] >= 50)                     scores[2]++;
    else if(grades[i] >= 25)                     scores[1]++;
    else if(grades[i] >= 0)                      scores[0]++;
      }

//outputing results


for(int z = 0; z < 200; z += 25)
{
    if(z == 175)
        cout << "Number of students between 175 and 200: " << scores[z] << endl;
    else
        cout << "Number of students between " << z << " and " << z + 24 << ": " << scores[z]<< endl;
}

return 0;
}
我知道问题出在世界的某个角落

//getting data from text file
    for(i=0; i<26; i++)
        {
            myfile >> grades[i];
            cin.ignore();
输出应在何时进行。

0-24之间的学生人数:12

我不知道为什么它不能正常工作。
谢谢你让我知道把输出也放在这里。。。忘了。

我不知道你想要什么,但仅供参考:

double score1, score2, score3, score4, score5, score6, score7, score8 = 0.0;

这一行只会将score8初始化为0。

您可以做一些事情来提高代码的可读性,从而更容易发现逻辑错误…

为什么不把分数变量做成一个数组呢?第二,为什么要使用双重编码?没必要,是吗

unsigned scores[8] = {0};
为什么有这么多的
if
s?一旦发现某个值在某个范围内,为什么还要继续查看它是否在您知道它不可能的范围内

if((grades[i] >= 175) && (grades[i] <= 200)) scores[7]++; 
else if(grades[i] >= 150)                    scores[6]++;
else if(grades[i] >= 125)                    scores[5]++;
else if(grades[i] >= 100)                    scores[4]++;
else if(grades[i] >= 75)                     scores[3]++;
else if(grades[i] >= 50)                     scores[2]++;
else if(grades[i] >= 25)                     scores[1]++;
else if(grades[i] >= 0)                      scores[0]++;
if((等级[i]>=175)和&(等级[i]=150)得分[6]++;
如果(等级[i]>=125)得分为[5]++;
如果(等级[i]>=100)得分为[4]++;
如果(等级[i]>=75)得分为[3]++;
如果(等级[i]>=50)得分为[2]++;
如果(成绩[i]>=25)得分[1]++;
如果(等级[i]>=0)得分为[0]++;
可以使用数组输出结果:

for(int i = 0; i < 8; i++)
{
    if(i == 7)
        cout << "Number of students between 175 and 200: " << score[i] << endl;
    else
        cout << "Number of students between " << (i * 25) << " and " << (i * 25 + 24) << ": " << score[i] << endl;
}
for(int i=0;i<8;i++)
{
如果(i==7)

预期的结果是什么?实际的结果是什么?什么告诉你出了什么问题?你确定你想让你的计数器是一个双精度的吗?是的,输出是疯狂的。比如2.55546846312 e-1665分数1的预期输出是12 0-24之间的学生人数:25 25-49之间的学生人数:2.07463e-31750-74之间的学生人数:1.28458e-312 75-99之间的学生人数:1 100-124之间的学生人数:6.91603e-310 125-149之间的学生人数:2.07367e-317 150-174之间的学生人数:0 175-200之间的学生人数:0这是output@Hank贝茨:你漏掉了一个分号,而且没有声明
facepalm
。非常好很好。我会把它插上。好消息和坏消息。好消息是我用你给我看的东西工作。坏消息是我不知道为什么它会给我那个输出。@汉克贝茨刚刚意识到我在输出循环中犯了一个错误。请修改你的代码。现在有了这个输出。学生人数在0到24之间:25学生人数在25到49之间:0学生人数在50到74年间,0到75的学生数量是:1到100和124之间的学生数量:125和149之间的学生数量:0和149之间的学生数量:在介于介于“和”之间的学生数量:0.我不太精通C++,但是也许你需要扔掉<代码>,<代码>。
该怎么办?
if((grades[i] >= 175) && (grades[i] <= 200)) scores[7]++; 
else if(grades[i] >= 150)                    scores[6]++;
else if(grades[i] >= 125)                    scores[5]++;
else if(grades[i] >= 100)                    scores[4]++;
else if(grades[i] >= 75)                     scores[3]++;
else if(grades[i] >= 50)                     scores[2]++;
else if(grades[i] >= 25)                     scores[1]++;
else if(grades[i] >= 0)                      scores[0]++;
for(int i = 0; i < 8; i++)
{
    if(i == 7)
        cout << "Number of students between 175 and 200: " << score[i] << endl;
    else
        cout << "Number of students between " << (i * 25) << " and " << (i * 25 + 24) << ": " << score[i] << endl;
}