アプリ版:「スタンプのみでお礼する」機能のリリースについて

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;
}

A 回答 (2件)

>int array[] ;



要素数はいくつですか?

>struct node *p;

用途は何ですか?また、構造体の定義はどこにありますか?
    • good
    • 0

>int swap(int a, int b)


>{
>int c;
>c = a;
>a = b;
>b = a;
>}

このコードでは、swap関数の中「のみ」でaとbとを入れ替えているだけです。
入れ替えた結果を、呼び出し元に反映できません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!