C言語から質問です。
C言語から質問です。
/*
main関数の中で初期化した配列
data[10]={60,30,70,25,20,9,92,55,20,10};
を関数 keisan() に引数として渡して、関数keisan()内で
平均値、最大値,最小値
を求め、その結果をmain関数に戻し、main関数内で
平均値、最大値,最小値を表示させるプログラムを作成せよ。
int keisan(const int data[], int data_kosuu, double answer[])
{
return 0;
}
とする。
(注)
プロトタイプ宣言を用いよ。
ヒント:平均値,最大値,最小値の3つの値を
main関数に戻すやり方として、配列answer[]を使うとよい。
data_kosuu は、配列の要素数を与えるものです。
ヒント: (int型の変数)/(int型の変数)=int型の値です。
int型同士の割り算の答えANSWERをdoubleにしたい場合は、
ANSWER=(double)(int型の変数)/(int型の変数);
と(double) キャストという操作をする必要がある
*/
#include <stdio.h>
int keisan(const int data[], int data_kosuu, double answer[]);
int main(void)
{
int i;
int a[10]={60,30,70,25,20,9,92,55,20,10}; // この値を使ってください
double ans[3];
keisan(a,10); /* keisan関数に配列と配列要素数を引数で与える */
for(i=0; i<10 ; i++) printf("a[%d]=%d\n",i,a[i]);
printf("平均=%lf 最小値=%d 最大値=%d\n",ans[0],ans[1],ans[2]);
return 0;
}
/* 合計・最大値・最小値を求める関数 */
int keisan(const int data[], int data_kosuu, double answer[])
{
int i;
int sum;
int min,max;
min=10; /* min の初期化 */
max=10; /* max の初期化 */
sum=0; /* 合計値の初期化 */
for (i=0; i<10 ; i++){
sum = sum+data[i];
if(data[i] > max) max=data[i];
if(data[i] < min) min=data[i];
}
sum=sum/10;
answer[0]=sum;
answer[1]=min;
answer[2]=max;
}
エラー
error C2198: 'keisan' : 呼び出しに対する引数が少なすぎます。
とでて先に進めません。
教科書などを見ても間違いがわかりません;
虫食いになってるところを自分なりにやってみたため、
根本的に間違ってるかもしれませんが、
どうかアドバイスや指摘などをお願いします。
補足
すみません、説明が足りなかったですね。 3次元配列の1次元目の最小値と最大値 2次元目の最大値と最小値 3次元目の最大値と最小値を求めたいのです。 つまり a[2,3,6]=1での1次元目は2であり それぞれの配列の1次元目は2、4、13、8、1であり これの最大値と最小値を求めたいのです。