C++ 程序未正确显示输出

C++ 程序未正确显示输出,c++,loops,C++,Loops,我的程序应该显示文本文件中的信息。 文本文件在这里 我在程序中找不到问题。我认为它必须处理循环,但我不确定。我的程序运行正常,但只显示第一行文本。 任何帮助都将不胜感激 #include <iostream> #include <string> #include <cstdlib> #include <fstream> using namespace std; int buildArrays(int A[],int B[],int C[]) {

我的程序应该显示文本文件中的信息。 文本文件在这里

我在程序中找不到问题。我认为它必须处理循环,但我不确定。我的程序运行正常,但只显示第一行文本。 任何帮助都将不胜感激

#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>

using namespace std;

int buildArrays(int A[],int B[],int C[])
{

    int i=0,num;

    ifstream inFile;
    inFile.open("candycrush.txt");

    if(inFile.fail())
    {
        cout<<"The candycrush.txt input file did not open"<<endl;
        exit(-1);
    }

    while(inFile)
    {
        inFile>>num;
        A[i]=num;

        inFile>>num;
        B[i]=num;

        inFile>>num;
        C[i]=num;

        i++;
    }
    inFile.close();

    return i;
}

void printArrays( string reportTitle, int levelsArray[], int scoresArray[], int starsArray[], int numberOfLevels )
{
    cout<<endl;
    cout<<reportTitle<<endl;
    cout<<"Levels\tScores\tStars"<<endl;
    cout<<"---------------------"<<endl;

    for(int i=0;i<numberOfLevels;i++)
    {
        cout<<levelsArray[i]<<"\t"<<scoresArray[i]<<"\t";

        for(int j=0;j<starsArray[j];j++)
        {
            cout<<"*";
        }
        cout<<endl;
    }
}


void sortArrays( int levelsArray[], int scoresArray[], int starsArray[], int numberOfLevels )
{
    for(int i=0;i<numberOfLevels;i++)
    {
        for(int j=0;j<numberOfLevels;j++)
        {
            if(levelsArray[i]<levelsArray[j])
            {
                int temp1=levelsArray[i];
                int temp2=scoresArray[i];
                int temp3=starsArray[i];

                levelsArray[i]=levelsArray[j];
                scoresArray[i]=scoresArray[j];
                starsArray[i]=starsArray[j];

                levelsArray[j]=temp1;
                scoresArray[j]=temp2;
                starsArray[j]=temp3;
            }
        }
    }
}


int main()
{
    const int MAX=400;
    int levelsArray[MAX];
    int scoresArray[MAX];
    int starsArray[MAX];

    int numberOfLevels=buildArrays(levelsArray,scoresArray,starsArray);

    printArrays( "Candy Crush UNSORTED Report", levelsArray, scoresArray, starsArray, numberOfLevels );
    sortArrays( levelsArray, scoresArray, starsArray, numberOfLevels);
    printArrays( "Candy Crush SORTED Report", levelsArray, scoresArray, starsArray, numberOfLevels );

    system("pause");
}
#包括
#包括
#包括
#包括
使用名称空间std;
intbuildarray(inta[],intb[],intc[]
{
int i=0,num;
河流充填;
infle.open(“candycrush.txt”);
if(infle.fail())
{
库特南;
B[i]=num;
填充>>num;
C[i]=num;
i++;
}
infle.close();
返回i;
}
void打印数组(字符串reportTitle,int-levelsArray[],int-scoresArray[],int-starsArray[],int-numberOfLevels)
{

显然,我在评论中没有说清楚

您的程序失败,因为您试图像读取数字一样读取星号。输入的第一行包含您试图像读取数字一样读取的星号。显然,此操作失败,此时所有进一步的读取都停止。这就是为什么您只看到一行输出

您需要将代码更改为星号,或将星号更改为实数

记住,计算机完全按照你告诉他们的去做。你告诉计算机读取一个整数,那么一个整数就是计算机所期望的,而不是一个代表整数的星号串


顺便说一句,很抱歉,您的排序代码也不正确。当您修复了输入代码后,您会看到这一点。

“我的程序运行正常”嗯,如果它产生了不正确的输出,那么此语句显然是不正确的(您的意思是它运行时不会崩溃?)。请描述它应该做什么…这不是与您的另一个问题相同的问题吗?问题似乎相当清楚。您的文件包含类似以下内容的条目
***
,但您试图将其视为一个数字
infle>>num;C[i]=num;
这显然不起作用。程序应该运行输出文件。它只运行第一行代码。In file表示文本。程序正在从输入文件读取输出。