募集終了

c言語で2分探索を使うのですがよく分からないです

C/C++

投稿日:2022年07月12日 10:13

メンターの報酬に合わせる

scanf_sで入力したものを2分探索する感じです
間違っているのでアドバイスお願いします。



#include <stdio.h>


int main(void) {
printf("思い浮かべた数字(1から100まで)入力してください。\n");
int highAndLow = 0;
int searchVal = 0;
int low = 0;
int mid = 50;
int min = 0;
int high = 100;
int arr[100] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100 };
int number = sizeof(arr) / sizeof(int);
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] == searchVal) {
printf("思い浮かべた数字は%d\n", arr[mid]);
break;
}
else if (arr[mid] != searchVal) {
scanf_s("%d", &highAndLow);
}
else if (highAndLow != 0) {
high = mid - 1;
printf("もう一度質問します。思い浮かべた数字は%dより少ない : Yesなら1 Noなら0を入力\n", mid);
}
if (highAndLow == 1) {
low = mid + 1;
printf("もう一度質問します。思い浮かべた数字は%dより大きい : Yesなら1 Noなら0を入力\n", mid);
}
else if (searchVal < arr[mid]) {
high = mid - 1;
printf("思い浮かべた数字は%dより小さい : Yesなら1 Noなら0を入力\n", mid);
}
else if (searchVal > arr[mid]) {
low = mid + 1;
printf("思い浮かべた数字は%dより大きい : Yesなら1 Noなら0を入力\n", mid);
}
}
return 0;
}
既読0

コメント


メッセージはまだありません

募集終了

回答可能なメンター

まだいません。