前提・実現したいこと
開発初心者です。かなり初歩的な質問ではありますが、よろしくお願いいたします。
C言語でプログラムを行っています。Linux環境です。Virtual boxを使用しています。gccでコンパイルします。
入力された数値の最大値、最小値、平均値を表示するプログラムを実現したいです。
発生している問題・エラーメッセージ
発生している問題として、得たい結果にはそぐわないものが得られます。
例
データ数を正の数で入力してください
3
数値を3個入力してください
1 2 3
最大値 = 0
最小値 = 4195792
平均値 = 0
該当のソースコード
#include <stdio.h>
#include <stdlib.h>
void max(int c[], int a, int d){
int i, j;
j = c[0];
for(i = 0;i < a;i++){
if(j < c[i]){
j = c[i];
}
}
d = j;
}
void min(int c[], int a, int e){
int i, j;
j = c[0];
for(i = 0;i < a;i++){
if(j > c[i]){
j = c[i];
}
}
e = j;
}
void ave(int c[], int a, int f){
int i, j;
j = 0;
for(i = 0;i < a;i++){
j = j + c[i];
}
f = j/a;
}
int main (void){
int a, b, i, d, e, f;
int *c;
printf("データ数を正の数で入力してください\n");
scanf("%d", &a);
printf("\n");
c = calloc(a,sizeof(int));
if(c == NULL){
printf("メモリ確保に失敗しました\n");
return 1;
}
printf("数値を%d個入力してください\n", a);
for(i = 0;i < a;i++){
scanf("%d", &c[i]);
}
max(c,a,d);
min(c,a,e);
ave(c,a,f);
printf("\n最大値 = %d\n最小値 = %d\n平均値 = %d\n", d, e, f);
free(c);
return 0;
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/02 02:24