C/C++の宿題片付けます 124代目
at TECH
474:デフォルトの名無しさん
09/03/23 09:38:05
>>437 負の値と零も検索出来るように。マクロ似のmainも外した。
#include <stdio.h>
int main(void) {
int n=0, *data, key=0, begin, end, mid, i;
while(1) {
if(scanf("%d", &n) != 1) break;
if(n == 0) break;
if(n < 0) continue; // 暫定コンティニュー
if((data = (int *)malloc(sizeof(int) * n)) == NULL) break;
for(i = 0; i < n; i++) {
if(scanf("%d", &(data[i])) != 1) break;
}
if(i != n) { free(data); break; }
if(scanf("%d", &key) != 1) { free(data); break; }
for(i = 1, begin = 0, end = n-1; begin < end; i++){
mid = (begin + end) / 2;
if(data[mid] < key)
begin = mid + 1;
else
end = mid - 1;
}
printf("%d\n", i);
free(data);
}
return 0;
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5306日前に更新/195 KB
担当:undef