0

この C プログラムでは、data.txt として読み込んだ配列のバイナリ検索を行っています。

最初に、data.txt を配列としてスキャンしようとしています。2 番目に、挿入ソート アルゴリズムを使用してソートしています。3 番目に、配列のバイナリ検索を行っています。私はCを初めて使用し、コードがどこで間違っているのかわかりません。間違っていることを教えてくれてありがとう。

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>


int main ()
{
int v, t, low, high, mid, search;
int n = 20, array[20];
int p = 0;
FILE *infile;
infile = fopen(“data.txt”,”r”);

while(!feof(infile))
{
    fscanf(infile,”%d”, &array[p]);
    p++;
}


for (p = 0; p < n; p++) {
    scanf("%d", &array[p]);
}

for (p = 1 ; p <= n - 1; p++) {
    v = p;

    while ( v > 0 && array[v] < array[v-1]) {
    t          = array[v];
    array[v]   = array[v-1];
    array[v-1] = t;

    v--;
    }
  }
for (p = 0; p <= n - 1; p++) {
    printf("%d\n", array[p]);

printf("Please enter a value (-1 = done)>\n");
scanf("%d",&search);

low = 0;
high = n - 1;
mid = (low+high)/2;

while( low <= high )
{
    if ( array[mid] < search )
        low = mid + 1;    
    else if ( array[mid] == search ) 
    {
        printf("%d is located at %d in the array.\n", search, mid+1);
        break;
    }
    else
        high = mid - 1;

    mid = (low + high)/2;
}
if ( low > high )
  printf("-1\n");

return 0;
}
4

1 に答える 1

0

1)。n を何らかの値で初期化します 2)。挿入ソートの後(私は推測します)、配列を印刷するためのprintfがあります。printf の後に別の中かっこを追加します。このプログラムが実行され続けていない場合 (プログラムを中断する文字を入力しない限り)、ループする前に戻っているため、動作する可能性がありますが、それでも大きな問題です..

于 2013-02-14T07:43:55.743 に答える