

関数を呼び出して引数を渡すときは、平均値を格納する変数のアドレスを渡します。  
整数値のデータはmain関数の中で配列を初期化する形式で入力する。

[code]

    int a[12] = {45, 57, 79, 60, 5, 38, 67, 55, 96, 33, 10, 73};
    
[/code]

**現状のソースコード:**

[code]

    #include <stdio.h>
    
    #define SIZE 5
    
    void min_max(int a[], int n, int *min, int *max) {
        int i;
        
        *min = *max = a[0];
        for (i=1; i<n; i++) {
            if (a[i] < *min) *min = a[i];
            else if (a[i] > *max) *max = a[i];
        }
    }
    int main(void) {
        int a[SIZE] = {45, 79, 60, 38, 55};
        int min, max;
        
        min_max(a, SIZE, &min, &max);
        
        printf("%d\n", min);
        printf("%d\n", max);
    
        return 0;
    }
    
[/code]

マルチポスト:  
<https://teratail.com/questions/313470>


CC BY-SA 4.0
2021-01-01T13:43:05.107
73012
2021-01-02T14:48:36.350
2021-01-02T14:48:36.350
32986
43376
question
c
以下のプログラムに平均値を求める変数をdouble型へのポインタとして宣言し、最小値、最大値と同様に呼び出し元の変数に直接、平均値を格納するように作成したい。


質問タイトルの内容を考えると、微妙に問題への理解が混乱しているために先に進めないのでは？

`以下のプログラムに平均値を求める変数をdouble型へのポインタとして宣言し`

必要なのは、平均値を求める`関数`の`パラメータ`をdouble型へのポインタとして宣言することと、平均値を`格納する変数`をdouble型の変数として宣言することです。  
そのことは質問(=課題?)の最初の行に書いてあります。(ちなみにdouble型とは記述されていませんが、それは大丈夫ですか？)

> 関数を呼び出して引数を渡すときは、平均値を格納する変数のアドレスを渡します。

そしてマルチポスト先の回答では最小値最大値を求める関数を改造して平均値を求めるように関数名とパラメータを追加していますが、課題としては平均値だけを求める独立した関数を追加して呼び出しても良いのでは？  
その辺は実際の課題の詳細か、可能ならば出題者に確認してみてください。

平均値計算自身は以下の記事に相当する内容をコーディングすれば良い訳です。  
[平均の求め方（計算式）と意味、欠点](https://mathwords.net/heikinchi)

> 平均とは、合計÷個数のことです。

* * *

それから、質問のタイトルや２つの行に書いてあることと、現状のソースコードを見較べると、マルチポスト先でのコメントやこのサイトのヘルプ等に解説されているように、貴方自身の考察や試行錯誤の無い宿題の丸投げのように見えるので、注意してください。  
[良い質問をするには？](https://ja.stackoverflow.com/help/how-to-ask)  
[学校の宿題は回答するべきでしょうか](https://ja.meta.stackoverflow.com/q/1805/26370)

* * *

そして以下に関しては

> 整数値のデータはmain関数の中で配列を初期化する形式で入力する。
[code]

>     int a[12] = {45, 57, 79, 60, 5, 38, 67, 55, 96, 33, 10, 73};
>  
[/code]

まず`main`関数の以下の部分を置き換えることになりますが

>
[code]

>     int a[SIZE] = {45, 79, 60, 38, 55};
>  
[/code]

元のデータ個数が5個で、置き換える新しいデータ個数が12個のため、以下のいずれかの追加対処が必要になります。

  * `#define SIZE 5`の`5`を`12`に変え、置き換える`a[12]`も`a[SIZE]`に変える
  * `min_max(a, SIZE, &min, &max);`の`SIZE`を`12`に変えて、`#define SIZE 5`は削除しておく
  * `min_max(a, SIZE, &min, &max);`の`SIZE`を`(sizeof(a)/sizeof(int))`に変える  
ついでに`a[12]`も`a[]`に変えて、`#define SIZE 5`は削除しておく

3番目の方法がデータ数が幾つになっても変更が少なくてお勧めですが、授業/講座やコースのカリキュラムによっては余計なことかもしれません。


CC BY-SA 4.0
2021-01-02T02:21:55.807
73018
2021-01-02T02:30:53.323
2021-01-02T02:30:53.323
26370
26370
73012
answer