配列を使って平均を求めるプログラムをJavaScriptで書いているのですが、
実行して得られる平均の値が異常です。(*具体的には後述します)
正しい書き方を教えていただけたら幸いです。
仕様は
・実行と同時にポップアップウインドウで、「生徒1~3」の点数を記入させる
・記入が終わると、ページに生徒の点数と、3人の平均点が表示される
というものです。以下がソースです。
var array = new Array(3);
var i;
array[0] = prompt("生徒1の点数を入力してください。", "");
array[1] = prompt("生徒2の点数をを入力してください。", "");
array[2] = prompt("生徒3の点数を入力してください。", "");
for(i = 0; i < 3; i++){
document.write("生徒 ", i + 1 );
document.write(":", array[i], "<br>");
}
var sum = array[0];
for(i = 0; i < 3; i++){
sum += array[i];
var mean = sum/3;
}
document.write("<hr>");
document.write("平均点: ", mean, "点", "<br>");
*平均値が異常というのは、例えば生徒1に10,生徒2に20,生徒3に30を入力した時の平均点が 3367343.3333333335になってしまう、というようなものです。
原因がわからず困り果てております。
どなたかご親切な方、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>3367343.3333333335
これは"10"+"10"+"20"+"30"、すなわた10102030を3で割った答えですね。
入力された数字は、数値なのか文字なのかjavascriptは判断できません。
とりあえず端数がないなら整数化してやるのが妥当かと。
<script>
var array = new Array(3);
array[0] = prompt("生徒1の点数を入力してください。", "");
array[1] = prompt("生徒2の点数をを入力してください。", "");
array[2] = prompt("生徒3の点数を入力してください。", "");
for(var i = 0; i < 3; i++){
document.write("生徒 ", i + 1 );
document.write(":", array[i], "<br>");
}
var sum = 0;
for(i = 0; i < 3; i++){
sum += parseInt(array[i]);
}
var mean = sum/3;
document.write("<hr>");
document.write("平均点: ", mean, "点", "<br>");
</script>
ご回答ありがとうございます!
おかげさまで無事に正しいプログラムを作ることができました。
文字列を整数化する、という基本的なところを忘れていたのですね。
とっても助かり、そして参考になりました。
ご親切に、どうもありがとうございました。
No.1
- 回答日時:
一回プログラムの流れを自分で計算とかしてみましたか?
まず、合計求める前にarray[0]の値代入してるので0番目は二回足されますね。
あと、ループの中で平均値求める意味ってありますか?
合計求まった後に1回計算すればいいと思うのですが。
とりあえず、値が正しく入っているのかとか地道にデバッグしてください。
早速のご回答、どうもありがとうございました!
ご厚意に感謝いたします。
>一回プログラムの流れを自分で計算とかしてみましたか?
自分なりに計算してみたんですが、
プログラムへの理解が足りておらず、問題点に気づきませんでした。
>まず、合計求める前にarray[0]の値代入してるので0番目は二回足されますね。
代入の考え方がおかしかったようです。参考になります!
>あと、ループの中で平均値求める意味ってありますか?
合計求まった後に1回計算すればいいと思うのですが。
ループを使ってみる練習だったのです。
確かに実際はその通りですね。
>とりあえず、値が正しく入っているのかとか地道にデバッグしてください。
がんばります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- 数学 データの分析と標準偏差 5 2022/03/25 12:55
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- 統計学 生物統計学の質問 7 2022/05/17 13:59
- その他(学校・勉強) これなんて答えるんですか。小学校の算数ですかね? 変な()とか数字変じゃないですかね…。 問題1:( 5 2023/08/01 09:37
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
現在の日付から、1ヶ月前にす...
-
なぜ、ジャバスクリプトが表示...
-
ホームページに日付を自動更新...
-
JavaScriptの表示方法
-
window.openでタイトル名の指定
-
JavaScriptの件で、質問させて...
-
<a>タグのテキストを取得
-
この将棋プログラムに王様ゲッ...
-
同じIDで定義した要素の配列を...
-
google apps scriptの終了のさせ方
-
ActiveXobjectが作成できない
-
idを使わずにonclickで自身の要...
-
翌月を取得するGASが分かりません
-
関数でy=g(x)のgとは何の略です...
-
ジェネレーターの作り方
-
jspからjavascriptの変数引継ぎ
-
functionから別のfunctionを実...
-
C#テキストボックスの文字を配...
-
フォーム入力値の重複チェック
-
Linux バイナリ実行できない "...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
○歳△ヶ月と×日を計算してくれる...
-
時間帯によって背景画像を変える
-
なぜ、ジャバスクリプトが表示...
-
document.open()の意味とは
-
前のページに戻るとページトッ...
-
for文のiを使ってリンク先のア...
-
HpのFlashで,ブロック回避の方...
-
JavaScriptで乱数+乱数の計算結...
-
カウントダウン JavaScript の ...
-
来年の今日の曜日・・・?
-
「分」単位で加算(減算)したい。
-
javascriptをはじめて勉強して...
-
javascriptとphpの連携で疑問
-
ウェブ上にキーボードを作りた...
-
初歩的なことなんですけど
-
コンマとクオーテーションマー...
-
JavaScriptでFirefox使用者の閲...
-
innerHTMLにて設定した情報を再...
-
document.openの意味
おすすめ情報