質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

1回答

1951閲覧

C言語で最大値、最小値、平均値を求める。

Nicks11

総合スコア5

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/07/01 07:12

前提・実現したいこと

開発初心者です。かなり初歩的な質問ではありますが、よろしくお願いいたします。
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;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

max(),min(),ave()とも結果が反映されていません。
値を受け取るには、参照(アドレス)を渡す必要が有ります。
関数をvoidにして、結果を戻り値にしなかったのは何故でしょう?
・・・
例えば、void max(int c[], int a, int d)をvoid max(int c[], int a, int *d)として、max(c,a,&d);と呼び出しましょう。

投稿2020/07/01 07:22

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nicks11

2020/07/02 02:24

戻り値を設定しなければ、得られませんよね、、 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問