#6
by しき » 6年前
修正してみました!
がまだエラーメッセージが絶えません。エラーメッセージは以下の通りになります。エラーメッセージの意味を教えてください。よろしくお願いします。
: 関数 ‘main’ 内:
:74:7: 警告: passing argument 1 番目の ‘binsearch’ の引数を渡すときにポインタからキャスト無しに整数を作成しています [デフォルトで有効]
printf(" x=%d ---> %d\n",a[binsearch(a,x,n)] );
^
:35:5: 備考: expected ‘int’ but argument is of type ‘int *’
int binsearch(int x, int a[DATA],int n)
^
:74:7: 警告: 2 番目の ‘binsearch’ の引数へ渡すときに整数からキャスト無しにポインタを作成しています [デフォルトで有効]
printf(" x=%d ---> %d\n",a[binsearch(a,x,n)] );
^
:35:5: 備考: expected ‘int *’ but argument is of type ‘int’
int binsearch(int x, int a[DATA],int n)
^
コード:
#include <stdio.h>
#include <stdlib.h>
#define DATA 10000
char fileinput(char filename[20], int a[DATA])
{
int n;
FILE *fin;
if ((fin=fopen(filename,"r"))==NULL){
return(1);
}
n=0;
while(fscanf(fin, "%d", &a[n])==1) n++;
fclose(fin);
return n;
}
void selectionsort(int a[DATA],int n )
{
int i,j,k;
int tmp;
for(i=0; i < n; i++){
j=i;
for(k=i+1; k < n+1; k++){
if (a[j] > a[k]){ j=k; }
}
tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
int binsearch(int x, int a[DATA],int n)
{
int min;
int max;
int mid;
min=0;
max=n;
while(min <= max ) {
mid = (min + max) / 2;
if(x < a[mid])
max=mid-1;
else if(x >a[mid])
min=mid+1;
else
return mid;
}
return(1);
}
int main(void)
{
char filename[20];
int n,x,y;
int a[DATA];
int i;
printf("ファイル名=");
scanf("%s",filename);
n=open(filename,a);
if(n==1){
printf("ファイルをオープンできません。\n");
}
else { selectionsort(a,n);
printf("探したい値を入力してください:");
scanf("%d",&x);
y=a[binsearch(x,a,n)];
if(x=y)
printf(" x=%d ---> %d\n",a[binsearch(a,x,n)] );
else
puts("見つかりませんでした");
return 0;
}
}
修正してみました!
がまだエラーメッセージが絶えません。エラーメッセージは以下の通りになります。エラーメッセージの意味を教えてください。よろしくお願いします。
: 関数 ‘main’ 内:
:74:7: 警告: passing argument 1 番目の ‘binsearch’ の引数を渡すときにポインタからキャスト無しに整数を作成しています [デフォルトで有効]
printf(" x=%d ---> %d\n",a[binsearch(a,x,n)] );
^
:35:5: 備考: expected ‘int’ but argument is of type ‘int *’
int binsearch(int x, int a[DATA],int n)
^
:74:7: 警告: 2 番目の ‘binsearch’ の引数へ渡すときに整数からキャスト無しにポインタを作成しています [デフォルトで有効]
printf(" x=%d ---> %d\n",a[binsearch(a,x,n)] );
^
:35:5: 備考: expected ‘int *’ but argument is of type ‘int’
int binsearch(int x, int a[DATA],int n)
^
[code]
#include <stdio.h>
#include <stdlib.h>
#define DATA 10000
char fileinput(char filename[20], int a[DATA])
{
int n;
FILE *fin;
if ((fin=fopen(filename,"r"))==NULL){
return(1);
}
n=0;
while(fscanf(fin, "%d", &a[n])==1) n++;
fclose(fin);
return n;
}
void selectionsort(int a[DATA],int n )
{
int i,j,k;
int tmp;
for(i=0; i < n; i++){
j=i;
for(k=i+1; k < n+1; k++){
if (a[j] > a[k]){ j=k; }
}
tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
int binsearch(int x, int a[DATA],int n)
{
int min;
int max;
int mid;
min=0;
max=n;
while(min <= max ) {
mid = (min + max) / 2;
if(x < a[mid])
max=mid-1;
else if(x >a[mid])
min=mid+1;
else
return mid;
}
return(1);
}
int main(void)
{
char filename[20];
int n,x,y;
int a[DATA];
int i;
printf("ファイル名=");
scanf("%s",filename);
n=open(filename,a);
if(n==1){
printf("ファイルをオープンできません。\n");
}
else { selectionsort(a,n);
printf("探したい値を入力してください:");
scanf("%d",&x);
y=a[binsearch(x,a,n)];
if(x=y)
printf(" x=%d ---> %d\n",a[binsearch(a,x,n)] );
else
puts("見つかりませんでした");
return 0;
}
}
[/code]