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

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

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

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

Q&A

解決済

4回答

2352閲覧

cで繰り返し合計と平均を求めたいです

the.world

総合スコア17

C

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

0グッド

0クリップ

投稿2019/07/02 06:13

編集2019/07/02 07:24

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

合計と平均が表示されない

エラーメッセージ

該当のソースコード

C言語ここに言語名を入力
ソースコード

int main(void) { int data; int cnt; int sum; double ave; sum = 0; cnt = 0; printf("Input data: "); while (scanf("%d", &data) != EOF) { sum += data; cnt++; printf("Input data: "); } printf("データ件数 = %d\n", cnt); if (cnt > 0) { ave = sum / cnt; printf("合計 = %d\n", sum); printf("平均 = %.1f\n", ave); } return 0; } ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

LouiS0616

2019/07/02 06:17

EOFを送出しましたか?
the.world

2019/07/02 07:27

Input data: 3 Input data: 3 Input data: 3 Input data: ^Z 送出したのですが結果が出ない状態です
LouiS0616

2019/07/02 07:31

OSはWindowsですか?
guest

回答4

0

Visual C++ の scanf はおかしくて、
^Z Enter ^Z Enter ^Z Enter と 3回入力しないと
EOF にならないようです。

getchar や fgets などは 1回の ^Z Enter で EOF になります。

while (scanf("%d", &data) == 1) {
として、数字以外の文字、例えば . Enter とか q Enter で
終了させてみてはいかがでしょうか?

投稿2019/07/02 17:45

kazuma-s

総合スコア8224

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

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

0

表示されますよ。

ただし、平均の計算が間違っていますけど。
割り算の記号は/です。
%ではありません。

あと、EOF-1なので、件数がゼロの時も合計と平均を表示しようとして、ゼロ除算になります。
if(cnt>0){では?

投稿2019/07/02 06:23

編集2019/07/02 07:13
otn

総合スコア84555

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

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

the.world

2019/07/02 07:21

Input data: 3 Input data: 3 Input data: 3 Input data: ^Z 変えた上でやってみたのですが表示されないです EOFした後結果が出ないです
otn

2019/07/02 07:25

どうやって実行していますか?
the.world

2019/07/02 15:10

CPadNextのコンパイラで実行してctrl+zでEOFしてます
otn

2019/07/02 15:18

ググっても情報が無いので、何者か分かりません。 exeファイルが生成出来るなら、それをコマンドプロンプト画面から実行してみてください。
guest

0

自己解決

環境設定をgccに変更してから実行してみたところ実行結果が表示される様になりました
ソースコードの間違いや解決策を提示して頂きありがとうございました

投稿2019/07/02 23:15

the.world

総合スコア17

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

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

cateye

2019/07/03 02:29 編集

消去しました
guest

0

ave = sum % cnt;

otnさんが言うように
ave = sum / cnt;
です。
あと、どちらかをdoubleにキャストしないと整数演算するので、小数点以下が求められません。
ave = sum / (double)cnt;

投稿2019/07/02 06:36

編集2019/07/02 06:37
cateye

総合スコア6851

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

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

the.world

2019/07/02 07:29

指摘ありがとうございます 指摘頂いた箇所を変更して実行してみたのですが 結果が表示されない状態です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問