我有一个函数,它接受一个指向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个并且它们被排序。不知道第一个随机垃圾数量的原因是什么。
你正面临着名的'索引出界'错误。您的排序循环超出了数组范围,导致读/写违规。简而言之,检查数组边界并确保您没有违反任何内存地址。