while文の判定について(C言語)
while文の判定についてです
たぶんすごいつまらないミスなので時間の余っている方
ご指導ください<_ _>
(自分ではいろいろ調べましたが原因がわかりません><、)
returnやbreakを使わないで二分探索を終了させよとの問題で
low-highで2ならばデータが見つかったとき
1ならば見つからなかったときという判定で
whileで抜けさせたいのですがどうしても抜けません><、
論理演算子の使い方が間違っているのでしょうか?
#include<stdio.h>
#define N 10
int main(void)
{
static int a[]={2,3,4,11,31,50,55,70,77,80};
int key,low,high,mid;
high=N-1;
low=0;
int i=0;
printf("検索するdata ? :");scanf("%d",&key);
ここです while((2!=(low-high)) || (1!=(low-high))){
mid=(low+high)/2;
if(a[mid]==key){
low=mid+1;
high=mid-1;
}
else if(a[mid]<key){
low=mid+1;
}
else{
high=mid-1;
}
}
if(2==(low-high)){
printf("%2dは%2d番目にありました",key,mid);
}
else{
printf( "見つかりませんでした" );
}
return 0;
}
while内でlow-highをprintfで出力しましたが2と1が出力されました