怎么反向排序输出不了啊?急!!

来源:百度知道 编辑:UC知道 时间:2024/06/16 16:23:06
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;

int main()
{
double a[99];
int index;
ifstream filein;
string filename;
int i;

index=0;
i=0;

filename = "filedata.txt";
filein.open( filename.c_str() );

if (filein.good())
{
filein >> a[index];
index++;
i++;

while (( filein.good() )&&(index<99))
{
filein >> a[index];
index++;
i++;
}

filein.close();

for(index<i;index=0;index--)
{
cout << a[index] <<endl;
}
}
else
{
cout << "***ERROR could not open file " << filename << "***" << endl;
}
return 0;
}

验证也没问题。就是运行的时候看不到输出部分。烦死了。到底怎么回事啊。我在第一个LOOP里加了输出命令

不好意思,没仔细看你的程序,我改:
问题出在for(index<i;index=0;index--) 里的index=0上,那是赋值,不是比较,以后index就等于0了。应该是index>0才对。for循环中间是条件,满足条件以后就会执行里面的语句,你的index显然不是0,于是就不执行里面的语句。使得当index==0时循环停止就要写成index>0。还有,for循环第一项是循环参数的赋值,你的index<i完全没有必要。可以省掉不写。直接换成for(;index>0;index--)就可以。

至于你为什么会出现前两行,我也不清楚,我猜想可能是你的a[]没有赋初值,我不知道good()是什么函数,但我觉得从文本里读出来的不应该是double型,而应该是字符型,你把double a[99];换成char a[99][99]=={0}试试。
我觉得你还是把两个循环换成
while (( filein.good() )&&(index<99))
{
filein.getline(a[index], sizeof(a[index]));

index++;
}

for(;index>0;index--)
{
cout << a[index] <<endl
}