gpt4 book ai didi

C++程序永远循环

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:32 25 4
gpt4 key购买 nike

我似乎遇到了一个问题,我已经坚持了几个小时。我运行该程序,它在请求用户输入后挂起。除非我终止程序,否则我的计算机也开始变慢。我不知道问题出在哪里。我尝试注释掉代码以查看问题可能来自何处。我在请求输入后放了一个 cout 语句,甚至不显示。

#include <iostream>
#include <vector>
#include <stdexcept>
#include <iomanip>
#include <cstdlib>
#include <array>
#include "problem2.h"

using namespace std;

int binarySearch(int array[], int input);
void selectSort(int arr[], int n);

int problem2() {
srand(time(0)); // generate seed based on current system time

int rand[20];
int result;
int input = 1;


cout << "Enter a number to search for: ";
cin >> input;

cout << "testset ";

for (int z = 0; z < 19; z++) {
rand[z] = random() % 70;
cout << rand[15];
}


selectSort(rand, 20);


for (int t = 0; t < 20; t++) {
//cout << random1D[z];
}
result = binarySearch(rand, input);
//cout << result;

return 0;
}

int binarySearch(int arr[], int a) {
int high = 19;
int middle = 19/2;
int low = 0;

while (arr[middle] != a && low<= high) {
if (arr[middle] > a) {
high = middle - 1;
} else {
low = middle - 1;
}

if (low > high) {

}
}
return middle;
}

void selectSort(int arr[], int n) {
int min, temp;

for (int i = 0; i < n-1; i++) {
min = i;

for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min])
min = j;
}
if (min != i) {
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}

最佳答案

你有几个循环,但除了一个循环之外,所有循环都有明确的终止。 for 循环在特定次数的迭代后全部结束,但您的 while 循环不太确定。您的 low 可能永远不会大于您的 high,因此循环会继续进行。

考虑更改为 low = middle + 1 或更改您的逻辑以更有可能确保 low 最终会超过 high。或者,更改 while 循环检查的条件。

关于C++程序永远循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35496881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com