
こんにちわ
実は、入力データを使って平均値を求めるプログラムについてなんですけど。
//データの平均値の計算
#include <stdio.h>
void main () {
int i, k, n, x[100];
double a;
while (1) {
a = 0;
printf("データ数を入力してください...");
scanf("%d",&n);
printf("正の実数のデータを入力してください。");
for (i = 0;i < n ;i++) scanf("%d",&x[i]);
for (k = 0;k < n;k++) a += x[k];
printf("平均値 %f\n", a/n);
}
}
すいません、インデントがいい加減です。
こうやると普通に平均値を出せますが、最初にデータ数を入力しなければいけません。
私は、データの個数を入力しないで平均値を出したいと思います。どういう風に上のプログラムを変更すればできるのでしょうか?上のプログラムに誤植があるとは思いますが。。。
また、たとえば最後に0以下の数字を入力したらデータ入力を終わらせる...
if(x[i]<=0)break; はどこに入れればいいでしょうか?
たくさんの質問すいません。ご教授よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんな感じでどうでしょうかね。
#include <stdio.h>
#define MAX 100
int main(){
int i, x[MAX];
double a;
printf("正の実数のデータを入力してください。");
a=0; i=0;
do{
printf("0以下で入力終了>");
scanf("%d",&x[i]);
if(x[i]<=0)
break;
a+=x[i++];
}while(i<MAX);
printf("平均値 %f\n", a/i);
return 0;
}
おぉ~しっくりいきました!
ありがとうございますm(._.)m ペコッ
プログラミングっておもしろいですね。
今後もいろいろなものを解いてみたいです。
No.3
- 回答日時:
scanfを使う代わりにgetsを使うのはいかがでしょうか.
読み込んだ文字列が"end"だったらループを抜ける.
それ以外だったらatoiを使って数値にして配列に格納する.
平均を出すときはiの値で割れば良いです.
No.2
- 回答日時:
ごめん、訂正。
(0 == i) || ((0 < i) && 0 <=x[i-1])
だわ。
この回答への補足
早速のご回答ありがとうございます。
//データの平均値の計算
#include <stdio.h>
void main () {
int i,k,x[100];
double a;
while (1) {
a = 0;
printf("正の実数のデータを入力してください。");
for (i = 0; (0 == i) || ((0 < i) && 0 <=x[i-1] ) ;i++) scanf("%d",&x[i]);
for (k = 0; k <= i-1 ;k++) a += x[k];
printf(" 平均値 %f\n", a);
}
}
。。。とやってみましたが、今回はデータを入力しても何もおきません。おそらくきちんと配列に値が挿入されてないと思いますが。すいません、まだC+の初心者で参考書読みながらやっています。
もうひとつ質問ですが、もし、a[i]={6 1 5 … }のようになっていて、データをn個入力したとして、a[i]内に入力されたデータの個数nは個別に求めることはできないのでしょうか?
よろしくお願いします。
No.1
- 回答日時:
#半分寝ぼけてます…
最初のforの条件文をかえりゃいいだけ。
(0 == i) && ((0 < i) && 0 <=x[i-1])
かな。break文はいらない。
次のforの条件文も変える必要が有りますが、分かるよね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
"scanf"でエンターで改行させな...
-
プログラミングの問題で、キー...
-
Eclipseコンソール表示を、リセ...
-
Yesならこっちへ、NOなら...
-
数字以外が入力されたらエラー...
-
scanfが2回使えない・・・?;
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
プログラミング初心者です。 Py...
-
入力する数字のサイズ制限について
-
C言語 for文をつかって記号を表...
-
"gets"は危険なのでしょうか?
-
コマンドプロンプトからのEOFの...
-
java初心者です。入力されたの...
-
switch文 defaultについて
-
scanf()の順番
-
C言語scanf_sで何故か2回入力に...
-
電卓の小数点
-
scanf が無視されます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
プログラミング初心者です。 Py...
-
C言語でgetchar();が上手く使え...
-
Excel VBAで、Application.Inpu...
-
電卓の小数点
-
cout関数を使っているのですが...
-
"scanf"でエンターで改行させな...
-
小数か整数かを判定する方法
-
至急教えてください!プログラ...
-
getchar()について 教えてくだ...
-
scanf が無視されます
-
batプログラム上で文字列を入力...
-
コマンドプロンプトからのEOFの...
-
IF文で戻ることはできますか?...
-
プログラミングの問題です 「金...
おすすめ情報