C言語の2分探索法について質問です。
以下のようなプログラムを作りたいのですが,途中でよく分からなくなってしまいました。添削お願いします。
入力された整数を配列に順次格納する(必ず昇順になるように入力)。0が入力された時に整数の入力を終了し,
次に入力された数字を二分探索によって配列から探索し,その配列の添字番号を出力するプログラムを作成せよ。
実行例
(例1) (例2)
9 ←入力 1 ←入力
7 ←入力 42 ←入力
69 ←入力 99 ←入力
31 ←入力 13 ←入力
93 ←入力 0 ←入力
59 ←入力 5 ←入力
17 ←入力 not found ←出力
0 ←入力
7 ←入力
2 ←出力
プログラム
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 10
int swap(int a, int b)
{
int c;
c = a;
a = b;
b = a;
}
int main(void)
{
int array[] ;
int low = 0;
int high = n - 1;
int mid;
int key;
int i, j, n;
int data;
struct node *p;
puts("整数を入力して下さい。");
for(i = 0; i < ARRAY_SIZE && scanf("%d", array + i) == 1; ++i){
if(array[i] == 0) break;
for(j = i; j > 0 && array[j-1] > array[j]; j--)
swap(array[j-1], array[j]);
}
n = i;
puts( "探索する値を入力して下さい" );
scanf( "%d", &key );
while( low <= high ) /
{
mid = (low + high) / 2;
if( array[mid] == key )
{
return ;
}
else if( array[mid] < key )
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
puts( "not found" );
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
if文の条件にscanf関数を使うと…?
-
scanf が無視されます
-
scanf関数 バッファに残ったエ...
-
java初心者です。入力されたの...
-
scanf("%s", buf);でスペースを...
-
Eclipseコンソール表示を、リセ...
-
double型が正常に認識されてい...
-
入力エラーの処理について。
-
【C言語】入力された文字種別ご...
-
少数部の判定
-
fgetsとループ処理
-
C言語scanf_sで何故か2回入力に...
-
Userformの入力順序をタブオー...
-
enterでループ終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報