60134


[この質問](https://ja.stackoverflow.com/q/60110/19110)でアドバイスいただいたように、

[code]

    int maxDoubleArray(int a[],int size) {...}
    
[/code]

の箇所を

[code]

    double maxDoubleArray(double a[],int size) {...}
    
[/code]

と直したのですが、以下のようなエラーが出てしまいました。

>
[code]

>     format ‘%lf’ expects argument of type ‘double *’, but argument 2 has
>     type ‘int *’ [-Wformat=]    scanf("%lf", &a[i]);
>               ~~^   ~~~~~
>               %d ex1205.c: In function ‘printDoubleArray’: ex1205.c:18:12:
> warning: format ‘%f’ expects argument of type ‘double’, but argument 2
>     has type ‘int’ [-Wformat=]    printf("%f ", a[i]);
>                ~^    ~~~~
>                %d ex1205.c: In function ‘main’: ex1205.c:43:21: warning:
> passing argument 1 of ‘readDoubleArray’ from incompatible pointer type
>     [-Wincompatible-pointer-types]
>          readDoubleArray(data, 10);
>                          ^~~~ ex1205.c:4:6: note: expected ‘int *’ but
> argument is of type ‘double *’  void readDoubleArray(int a[], int
>     size)
>           ^~~~~~~~~~~~~~~ ex1205.c:45:22: warning: passing argument 1 of
> ‘printDoubleArray’ from incompatible pointer type
>     [-Wincompatible-pointer-types]
>          printDoubleArray(data, 10);
>                           ^~~~ ex1205.c:14:6: note: expected ‘int *’ but
> argument is of type ‘double *’  void printDoubleArray(int a[], int
>     size)
>           ^~~~~~~~~~~~~~~~ ```
>  
[/code]

このようなエラーには、どう対処したら良いですか。


CC BY-SA 4.0
2019-10-30T13:07:03.290
60132
2019-10-30T15:07:45.100
2019-10-30T13:14:59.727
19110
36412
question
c
実数値の配列の最大値を返す関数（2回め）


以下のように直すと良いと思います。（ **追記** : 表示結果が小数点以下切り捨てになっていた点も修正済みです。）

[code]

    #include <stdio.h>
    
    /* size個 の入力された実数データを 配列の先頭から順番に格納する */
    void readDoubleArray(double a[], int size)
    {
        int i;
        for(i=0;i<size;i=i+1) {
            printf("%d 番目? ", i+1);
            scanf("%lf", &a[i]);
        }
    }
    
    /* size個 の実数データが入っている配列を 配列の先頭から順に出力する */
    void printDoubleArray(double a[], int size)
    {
        int i;
        for(i=0;i<size;i=i+1) {
            printf("%lf ", a[i]);
        }
        printf("\n");
    }
    
    //要素数size の実数をもつ配列 a の中の最大値を返す．
    
    double maxDoubleArray(double a[], int size)
    {
        int i;
        double max;
        max=a[0];
        for(i=1;i<size;i=i+1) {
            if (a[i]>max){
                max=a[i];
            }
        }
        return max;
    
    }
    
    int main(void)
    {
        double data[1024];
    
        readDoubleArray(data, 10);
        printf("順番に出力:");
        printDoubleArray(data, 10);
        printf("最大値:%lf\n", maxDoubleArray(data,10));
    
        return 0;
    }
    
    
[/code]

なお、次回以降で良いと思いますが、Stack
Overflowで1つの回答で解決しなかった場合は、コメント等を使って引き続きやり取りすることができるので、元の投稿の回答者に引き続き答えてもらうのが、後々このサイトを見る人たちのためになると思いますよ
:)


CC BY-SA 4.0
2019-10-30T13:24:20.150
60134
2019-10-30T15:07:45.100
2019-10-30T15:07:45.100
17181
17181
60132
answer