
こんにちわ
実は、入力データを使って平均値を求めるプログラムについてなんですけど。
//データの平均値の計算
#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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のプログラミングですが、
-
C言語の整数の判別
-
Userformの入力順序をタブオー...
-
入力する数字のサイズ制限について
-
コンソールアプリの入力時に改...
-
正負を反転させて出力するプロ...
-
fgetsとループ処理
-
Javaについて質問です。 勉強し...
-
コンボボックスで日本語入力を...
-
C言語でタイミングを合わせるゲ...
-
WindowsでEOF
-
Eclipseでコマンドラインを入力...
-
数字以外が入力されたらエラー...
-
ダメだ・・・分からない。while...
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
プログラムでの数字につく”f”の...
-
「Aに対するBの割合」と「Aに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
コマンドプロンプトからのEOFの...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
cout関数を使っているのですが...
-
プログラミングの問題です 「金...
-
scanf関数について
-
Userformの入力順序をタブオー...
-
C言語でgetchar();が上手く使え...
-
プログラムの実行時に'<'でリダ...
-
C言語初心者です。ファイルの読...
-
scanf が無視されます
-
実行結果の順番がおかしいんで...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報