質問編集履歴

1

修正中のコードを載せました。

2020/07/25 00:50

投稿

ceg34ry
ceg34ry

スコア5

test CHANGED
File without changes
test CHANGED
@@ -87,3 +87,55 @@
87
87
  ### 補足情報(FW/ツールのバージョンなど)
88
88
 
89
89
  実行環境はpaiza.ioです。
90
+
91
+
92
+
93
+ ###修正中のコード
94
+
95
+ 頂いた回答をもとに修正しました。探索したい値(val)が3,7,11なら正常に探索結果が表示され、
96
+
97
+ 1,5,9,13なら、何も表示されない状況です。まだうまく動作しません。以下修正中のコードです。
98
+
99
+ ```C
100
+
101
+ #include <stdio.h>
102
+
103
+
104
+
105
+ int main(void){//二分探索法
106
+
107
+
108
+
109
+ int array[7]={1,3,5,7,9,11,13};
110
+
111
+ int lo=0, mid, hi=6;
112
+
113
+ int val=11;//探索したい値
114
+
115
+
116
+
117
+ while(lo < hi){//継続条件修正済み
118
+
119
+ mid = (lo + hi) / 2;
120
+
121
+ if(array[mid] < val){
122
+
123
+ lo = mid + 1;
124
+
125
+ }else if(array[mid] > val){
126
+
127
+ hi = mid - 1;
128
+
129
+ }else{
130
+
131
+ printf("値「%d」は配列の[%d]番目で発見しました",val,mid);
132
+
133
+ break;//追記
134
+
135
+ }
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```