要素が昇順で入力されたときに、配列に対してバイナリ検索を実行するための次のプログラムを記述しました。このバイナリ検索プログラムでエラーが発生するのはなぜですか?
#include<stdio.h>
#include<conio.h>
void main()
{
int key,high,low,mid,n,i,a[100];
clrscr();
printf("Enter the number of elements:");
scanf("%d",&n);
printf("\nEnter the elements:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Enter the key element:");
scanf("%d",&key);
low=0;
mid=n-1;
mid=(low+high)/2;
while(low <= high && key != a[mid])
{
mid=(low+high)/2;
if (key > a[mid])
low=mid+1;
else
high=mid-1;
}
if (a[mid] == key)
printf("\nKey element is present at position %d",mid+1);
else
printf("\nElement not present.");
getch();
}
Dev C++でコンパイルしたプログラムを実行すると、「メモリを読み取れませんでした」というエラーが表示されます。どのようにこれを修正することができますか?