![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.4ベストアンサー
- 回答日時:
最初の入力を別処理すれば最大値、最小値の初期値を悩まなくてすみますね。
limits.hをインクルードしてintの最大値INT_MAXと最小値INT_MINを使う手もありますが。。#include <stdio.h>
int main(void) {
int i,n,data,max,min,sum;
/* nを入力 */
printf("n? "); scanf("%d",&n);
if (n<1) { printf("n error\n"); return -1;}
/* 最初のデータ */
printf("data %d?",1); scanf("%d",&data);
max=min=sum=data;
/* 2回目以降のデータ */
for (i=1; i<n; i++) {
printf("data %d?",i+1); scanf("%d",&data);
if (data>max) max=data;
if (data<min) min=data;
sum += data;
}
/* 表示 */
printf("最大=%d 最小=%d 平均=%.1f\n",max,min,sum,(double)sum/(double)n);
return 0;
}
No.6
- 回答日時:
>EOFの検出により入力の最終を判定する。
とはどういうことですか?scanfやfscanfは、入力失敗したときにEOFが返ってきます。例えば"%d"で数字を読むときにアルファベットが入力されたときなどです。
キーボードから入力する場合、DOSの場合EOFはctrl-z、Unixはctrl-Dだったと思います。
fgetcはファイルから1文字読んでファイルの最後かファイルエラーだったらEOFを返します。ファイルの最後なのかファイルエラーだったのかは、foefやferrorで判断します。
fgetsはファイルから1行ずつ読み、ファイルの最後の行かファイルエラーだったらNULLを返します。
いろいろややこしいです。
今ごろすみません。N04なのですが実行したら
<n?となり入力しても最大値などが表示されなく終了してしまいます。どうしたらいいでしょうか?
No.5
- 回答日時:
No.1です。
nが与えられているのではなく、EOF検出まで入力を続けるのでしたら、max=-99999;min=99999;sum=0;n=0;
while (EOF!=scanf("......", ......) /*scanfでnumに格納*/)
{
max<numならばmax=num;
min>numならばmin=num;
sum+=num;
n++;
}
maxとminとsum/nとを出力;
以上です。
>EOFの検出により入力の最終を判定する。とはどういうことですか?
キーボードからでしたら、EOFに相当するのは、CTRL-D(Ctrlキーを押しながらDを押す)だったように記憶しています。
scanf の代わりにfscanfを使うとファイルからの入力ができます。ファイルからの入力の場合は、ファイルの終了時にEOFが検出されます。
No.3
- 回答日時:
No.2のarukamunです。
コメントいわれすれましたね。
個数も入力するのかわからなかったので、ESCキーを押すと、最大値、最小値、平均値を出すようにしました。
No.2のプログラムでは負の整数は考えていませんが、必要ですか?
No.2
- 回答日時:
とりあえず、サンプルプログラムを書いておきますね。
#include <stdio.h>
#include <conio.h>
int main()
{
int i,ival,imax,imin,isum,icnt ;
icnt = 0 ;
imax = 0 ;
imin = 0x7ffffff ;
isum = 0 ;
ival = 0 ;
do {
i=getch();
if ( i >= '0' && i <= '9' ){
printf("%c",(char)i);
ival *= 10 ;
ival += i-'0' ;
} else if ( ival > 0 && ( i == 0x0d || i == 0x1b ) ){
printf("\n");
icnt ++ ;
isum += ival ;
if ( ival > imax ){
imax = ival ;
}
if ( ival < imin ){
imin = ival ;
}
ival = 0 ;
}
} while ( i != 0x1b );
printf("max : %d\nmin : %d\nave : %d.%1d\n",imax,imin,isum/icnt,(10*isum/icnt)%10);
return icnt ;
}
No.1
- 回答日時:
nが与えられているものとすると
max=-99999;min=99999;sum=0;
i=1からnまで繰り返し、
{
scanf()等で整数値を得て、numに格納;
max<numならばmax=num;
min>numならばmin=num;
sum+=num;
}
maxとminとsum/nとを出力;
以上のような感じでどうですか?
この回答への補足
ありがとうございます☆やってみます。聞きたいんですけど小数第一位までだとfloatを使って%6.1fを使えばいいんですよね?追加でEOFの検出により入力の最終を判定する。とはどういうことですか?終わりにしたいときにEOFと竜力すばいいのですか?文が長くなりすみません・・・。
補足日時:2004/10/25 19:52お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 1 2023/01/31 18:53
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 5 2023/01/31 23:35
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- パチンコ・スロット パチスロの初当たり平均枚数について質問です 1 2023/08/22 09:59
- Java Java配列の問題を教えてください。 乱数で20個出力し、最大、最小、合計、平均を求め、更に昇順にソ 3 2023/07/10 18:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseコンソール表示を、リセ...
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
Excel VBAで、Application.Inpu...
-
scanf関数について
-
EDITコントロールで入力できる...
-
小数か整数かを判定する方法
-
4桁の数字以外を入力したらエラ...
-
scanf が無視されます
-
入力値が1以下、かつ数字以外の...
-
数字以外が入力されたらエラー...
-
VB.NETで16進数+16進数や16進...
-
scanf関数を用いての標準演算子...
-
java初心者です。入力されたの...
-
IF文で戻ることはできますか?...
-
漢字のソートについて
-
C言語 逆ピラミッドの作り方
-
C言語の非標準コンソール関数ge...
-
プログラム(C)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
プログラミングの問題です 「金...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
小数か整数かを判定する方法
-
cout関数を使っているのですが...
-
double型が正常に認識されてい...
-
scanfが2回使えない・・・?;
-
C言語でgetchar();が上手く使え...
-
WindowsでEOF
おすすめ情報