#include<stdio.h>
int main(void)
{
int a[4];
int i=0;
int n;
int sum=0;
printf("正数を入力してください\n");
while(i<=4)
{scanf("%d",&n);
if(n>=0)
{a[i]=n;
sum=sum+a[i];
i++;
}
else{printf("正数を入力してください");}
}
printf("正数の合計値は%dです",sum);
printf("正数の平均値は%lfです",(double)(sum/5));
return(0);
}
上記は正数のみ配列に保存し、その合計と平均を表示するプログラムを
製作しようとして書いたものですが次のような問題点があり正常に機能しません。
(1)a[i]=n;をn=a[i];と置き換えると不正な値が表示される
(2)平均値の小数点以下の値がおかしい
(例)8+8+8+9+8と入力し合計値41に対し、平均値が8.000000
解決法が分からず困っています。どなたかお力添えお願いします。
No.4ベストアンサー
- 回答日時:
#2です。
> a[i]=n;とn=a[i];は動作上別ということでしょうか?
そこから…?
どういう動作を期待しているのか判りませんが、
a[i]=n;
a[i]にnの値を「代入」する。
n=a[i];
nにa[i]の値を「代入」する。
このときnの値は入力しているから判っているけど、a[i]の値はまだ決まっていないので、何が入るか判らない。
No.3
- 回答日時:
>int a[4];
で、
>while(i<=4)
のループをして見せたり、
バッファオーバーラン前提で、
>printf("正数の平均値は%lfです",(double)(sum/5));
5個と思っている時点でどうかと……。
int a[4];
で用意されるのは、
a[0]、a[1]、a[2]、a[3]という「4個」のint型の変数です。
「4以下」のループは4も含みますから、4つの箱に5個納める方法を考えないといけません。
CPUにとってはそんなコト知ったことではありませんから…隣にあると思われる箱にとりあえず放り込んで完了です。
隣にある箱はiかも知れません。
# 5回目の入力で「2」を入力したときにどうなりますかね?
他の部分については既に回答がありますので。
あと……「C/C++」のカテゴリありますからそちらの方がふさわしいかと。
No.2
- 回答日時:
(1)a[i]=n;をn=a[i];と置き換えると不正な値が表示される
何のために置き換えるのかが判りません。
a[i]は値が不定です。
(2)平均値の小数点以下の値がおかしい
(double)にキャストする前に「sum/5」の段階がint/intの計算なので、intしか答えがない。
(double)sum/5
で正しい結果が出る。
No.1
- 回答日時:
(1)a[i]=n;をn=a[i];と置き換えると不正な値が表示される
・・・a[i]=は初期値が指定されていないので、不定です。
従って、実行時のメモリー状態がそのまま利用されます。
(2)平均値の小数点以下の値がおかしい
・・・キャストの対象が整数演算の結果になっているためです。
((double)sum/5))でいいとおもいます。
この回答への補足
a[i]=n;とn=a[i];は動作上別ということでしょうか?
それすら分からないので・・・
a[i]=n;だとたまたまコンパイルに成功してしまうのか、
n=a[i]の形式だから駄目なのか。
前者だとしたら全く見当違いのプログラムを組んでいたことになりますが・・・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
白血球が多いとどんな心配があ...
-
腕を見たら黄色くなってる部分...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
精子が黄色?
-
勃起する時って痛いんですか? ...
-
尿検査前日に自慰行為した時の...
-
尿検査の前日は自慰控えたほう...
-
口の中に黒い血の塊
-
これって喉仏ですか? 私は女性...
-
精子に血が・・・
-
中出しをするとお腹が痛い・・・。
-
納豆食べた後の尿の納豆臭は何故?
-
甲状腺腫れ
-
EXCELで式からグラフを描くには?
-
EXCELで条件付き書式で空白セル...
-
筋トレするとチンコが縮んじゃ...
-
爪が紫色?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報