【问题标题】:C++ Bubble Sorting an Array that outputs different numbersC ++冒泡排序输出不同数字的数组
【发布时间】:2014-12-05 03:32:29
【问题描述】:

所以我在使用这个程序时遇到了一些问题。代码的重点是将一个名为grades.txt的数字列表输入到一个大小为28的数组中,然后冒泡排序并输出该数组。

我已经查看了有关此问题的其他线程,并尝试实施他们的解决方案,但几乎没有成功。

我在冒泡排序前后输出了数组,它完美地列出了数组。尝试输出排序数组时出现问题。它没有按顺序列出数字,而是给了我诸如 0,0,0,0,0,0,0,0,0,1,8,66,2292876,3012834 等数字。

我真的很想让这个程序运行起来,任何和所有的帮助都将不胜感激。

附:我计划将此代码编写为单独的函数以及添加其他内容。这只是一个初步步骤,我想解决这个问题,这样我就不必再处理几十行代码来调试了。

    #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;
    }

【问题讨论】:

  • 你需要给X一个值并在你的while循环中增加X。我不确定您编写的程序是否应该首先打印出未排序的数组。如果我没记错的话,int X 不是默认初始化的。 int X = 0 和 while 循环 ++X 的每次迭代开始时。因为在进入循环之前有一个data &gt;&gt; array[X]
  • @Zaphod 效果很好。非常感谢!

标签: c++ arrays sorting bubble-sort


【解决方案1】:

在使用 X 索引数组之前,您不会初始化它。然后你永远 将数据读入数组后增加X,所以你所有的输入数字都是 存储在同一位置。每一个都抹去那段记忆 之前读过的。

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

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

【讨论】:

  • 嘿,是的,你成功了。我现在才玩 C++ 几个月。函数,特别是参数传递是我正在尝试处理的事情。也感谢您对网站的更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 2015-01-27
  • 1970-01-01
  • 2018-02-25
  • 1970-01-01
相关资源
最近更新 更多