所以我对这个程序有点麻烦。代码的要点是将一个名为grades.txt
的数字列表输入到一个大小为28的数组中,然后冒泡排序并输出所述数组。
我已经研究了其他相关问题,并尝试实施他们的解决方案,但收效甚微。
我在冒泡排序之前和之后输出数组,它完美地列出了数组。尝试输出排序的数组时出现问题。它没有按顺序列出数字,而是给出了数字,例如0,0,0,0,0,0,0,0,0,1,8,66,2292876,3012834,依此类推。
我真的很想让这个程序正常运行,我们将非常感谢所有人的帮助。
P.S。我打算将此代码编写为单独的函数以及添加其他内容。这只是一个初步的步骤,我希望能够解决这个问题,因此我不必再处理几十行代码来进行调试。
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
#define SIZE 28
int main ()
{
int array[SIZE], X;
ifstream data;
data.open("grades.txt");
data >> array[X];
while(! data.eof())
{
data >> array[X];
cout << array[X] << endl;
}
data.close();
cout << "\n\n\nContinue!\n\n\n";
cin.get();
int i, j, tmp;
for (i = 0; i < SIZE - 1; ++i)
{
for (j = 0; j < SIZE - i - 1; ++j)
{
if (array[j] > array[j + 1])
{
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
for(int C = 0; C < SIZE; C++)
cout << array[C] << endl;
return 0;
}
答案 0 :(得分:0)
在使用X
索引数组之前,不要初始化X
。然后你永远不会
在将数据读入数组后递增{{1}},因此所有输入数字都是
存储在同一位置。每个人都消灭了记忆
在它之前读过的那个。
出现的唯一原因您可以打印原始数组 正确的是,你打印后立即打印你读取的每个值, 在你通过在该位置存储下一个值来擦除它之前。 如果你有单独的函数来加载数组并打印数组, 输入循环完成后会出现打印循环,你会看到 你的输入有多糟糕。
您可能会将此视为https://codereview.stackexchange.com/的问题。 造成这种错误的主要原因是你的编程风格 坦率地说需要做很多工作。 (没有什么可以羞耻的,你是这个的新手 你还没学会绳索。) 我之前提到的功能分离(输入与输出) 段落是编程风格的一个方面。 同样,未初始化的变量,如果不太可能 你使用了一种更好的循环控制逻辑方式。