我的程序应该显示来自文本文件的信息。 文本文件位于http://pastebin.com/qB6nX2x4
我在程序中找不到问题。我认为它必须处理循环但我不确定。我的程序运行正常,但只显示第一行文本。 任何帮助将不胜感激。
#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");
}
答案 0 :(得分:2)
显然,我在评论中没有说清楚。
您的程序失败了,因为您尝试将星号读作数字。输入的第一行包含星号,您尝试将其读作数字。显然这会失败,此时所有进一步的阅读停止。这就是为什么你只看到一行输出。
您需要更改代码以读取星号,或将星号更改为实数。
记住计算机正是你告诉他们的。你告诉计算机读取一个整数,然后一个整数是计算机所期望的,而不是一串代表整数的星号。
BTW很抱歉这样说,但您的排序代码也不正确。当您修改输入代码时,您会看到这一点。