助けてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
劉578

助けてください。

#1

投稿記事 by 劉578 » 3年前

適当な名前でint型の配列を準備し,キーボードから上限100までの整数を6つ入力して6つの数字の合計,平均,最大,最小を表示する(main関数側で表示する)プログラムを作成したいです.このとき,自作の関数側を次のような名前と仮引数とするとき,main関数およびcall関数の中身を完成させなさい.(平均は少数が出てくるはずであるが,整数値でよい)call関数は,配列を受取り,合計,平均,最大,最小を求めることを行う.ヒント:sum, ave, max, minの初期値をどのようにするか?という問題です。下のを使うという指示が出ています。
void call(int n, int a[ ], int *sum, int *ave, int *max, int *min)
やってみましたが何がダメなのかわかりません。添削お願いします。

コード:

#include<stdio.h>

void call(int n, int a[], int *sum,int *ave, int *max, int *min);
int b,c,d,e,f,g,n;
int a[]={b,c,d,e,f,g};

int main(void)
{
	printf("100までの整数を6つ入力してください");
	fflush(stdout);
	scanf("%d%d%d%d%d%d",&b,&c,&d,&e,&f,&g);
	call(n, a[], &sum, &ave, &max, &min);
	printf("合計:%d 平均:%d 最大:%d 最小:%d",sum, ave, max, min);
}

void call(int n, int a[], int *sum,int *ave, int *max, int *min)
{
	*sum=b+c+d+e+f;
	*ave=*sum/5;
	for(n=0;n<6;n++){
		if (a[n] > *max){
		 *max =a[n];
	}

	for(n=0;n<6;n++){
		if(a[n] > *min){
			*min=a[n];
		}
	  }
	}
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 助けてください。

#2

投稿記事 by みけCAT » 3年前

  • 変数を静的配列の初期化に使おうとしている
  • 変数 sum, ave, max, minを宣言せずに使っている
  • 関数callを呼び出すときにa[]というのは間違っている (カッコが余計)
  • *sumを計算する時にgを入れ忘れている
  • *aveを計算する時に割る数が間違っている
  • *maxや*minの計算に入力が反映されていない配列aの要素の値を使っている
修正版:

コード:

#include<stdio.h>

void call(int n, int a[], int *sum,int *ave, int *max, int *min);
int b,c,d,e,f,g,n;
int a[];

int main(void)
{
	int sum, ave, max, min;
	printf("100までの整数を6つ入力してください");
	fflush(stdout);
	scanf("%d%d%d%d%d%d",&b,&c,&d,&e,&f,&g);
	call(n, a, &sum, &ave, &max, &min);
	printf("合計:%d 平均:%d 最大:%d 最小:%d",sum, ave, max, min);
}

void call(int n, int a[], int *sum,int *ave, int *max, int *min)
{
	*sum=b+c+d+e+f+g;
	*ave=*sum/6;

	*max=b;
	if (c > *max) *max = c;
	if (d > *max) *max = d;
	if (e > *max) *max = e;
	if (f > *max) *max = f;
	if (g > *max) *max = g;

	*min=b;
	if (c < *min) *min = c;
	if (d < *min) *min = d;
	if (e < *min) *min = e;
	if (f < *min) *min = f;
	if (g < *min) *min = g;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

劉578

Re: 助けてください。

#3

投稿記事 by 劉578 » 3年前

ありがとうございます。割る数を間違えてるのはあほすぎて自分でうなだれました。

返信

“C言語何でも質問掲示板” へ戻る