在我的分拣程序中打印溢出或垃圾值

时间:2018-03-04 18:40:16

标签: c++ sorting

我有一个函数,它接受一个指向int数组的指针。该数组由6个随机数组成,范围从1-6(骰子游戏)。我的函数应该按升序对数字进行排序。我可以运行我的代码,它的工作原理,然后我可以再次运行它,我得到垃圾和溢出吐出的排序输出。我无法确定我的逻辑错误的位置,任何帮助将不胜感激。

    bool farkle_check(int* dice_roll){
148 //      int farkle1[] = {2, 2, 3, 3, 4, 6}, farkle2[] = {2, 2, 3, 4, 4, 6}, farkle3[] = {2, 3, 4, 4, 6, 6};
149         int idk = 0;
150         cout << "before sorting is\n";
151         for(int j = 0; j < 6; j++){
152                 cout << dice_roll[j];
153         }
154         cout << endl;
155         for(int i = 0; i < 6; i++){
156                 for(int j = 0; j < 6-i; j++){
157                         if(dice_roll[j] > dice_roll[j+1]){
158                               idk = dice_roll[j];
159                               dice_roll[j] = dice_roll[j+1];
160                               dice_roll[j+1] = idk;
161                               }
162                 }
163         }
164         cout << "after sorting\n";
165         for(int j = 0; j < 6; j++){
166                 cout << dice_roll[j];
167         }
168
169         cout << endl;

这是我的示例运行,你会注意到程序按照预期的方式运行第一次运行,但后来不适用于第二次运行。在绿色下划线运行中,还值得注意的是,输出的最后5个数字确实是我的原始随机数中的5个并且它们被排序。不知道第一个随机垃圾数量的原因是什么。

enter image description here

1 个答案:

答案 0 :(得分:0)

你正面临着名的'索引越界'错误。您的排序循环超出了数组范围,导致读/写违规。简而言之,检查数组边界并确保没有违反任何内存地址。