C ++ Bubble对输出不同数字的数组进行排序

时间:2014-12-05 03:32:30

标签: c++ arrays sorting bubble-sort

所以我对这个程序有点麻烦。代码的要点是将一个名为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;
    }

1 个答案:

答案 0 :(得分:0)

在使用X索引数组之前,不要初始化X。然后你永远不会 在将数据读入数组后递增{{1}},因此所有输入数字都是 存储在同一位置。每个人都消灭了记忆 在它之前读过的那个。

出现的唯一原因您可以打印原始数组 正确的是,你打印后立即打印你读取的每个值, 在你通过在该位置存储下一个值来擦除它之前。 如果你有单独的函数来加载数组并打印数组, 输入循环完成后会出现打印循环,你会看到 你的输入有多糟糕。

您可能会将此视为https://codereview.stackexchange.com/的问题。 造成这种错误的主要原因是你的编程风格 坦率地说需要做很多工作。 (没有什么可以羞耻的,你是这个的新手 你还没学会绳索。) 我之前提到的功能分离(输入与输出) 段落是编程风格的一个方面。 同样,未初始化的变量,如果不太可能 你使用了一种更好的循环控制逻辑方式。