- ベストアンサー
配列を使って平均を求めるプログラムの異常 JavaScript
配列を使って平均を求めるプログラムを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になってしまう、というようなものです。 原因がわからず困り果てております。 どなたかご親切な方、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
関連するQ&A
- javascriptで合計を出力したいです
まず最初にソース載せます⇓ <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-type" content="text/html; charset=shift-jis"> <title>総合演習</title> </head> <body bgcolor="#FFFFFF"> <script type="text/javascript"> var ninzu2; var ninzu; ninzuu2=Number(ninzu); ninzu=prompt('人数を入力してください', '3');//人数を入力 var points2; var points; points2=Number(points) var points=new Array(); for(var i=0; i<ninzu; i++){ var anaswer; points[i] = anaswer; anaswer = prompt("点数を入力してください",""); var anaswer2; anaswer2=Number(anaswer); } var sum2; var sum=0; sum2=Number(sum); for(i=0; i<points.length; i++){ sum=+points[i]; } document.write(sum); </script> </body> </html> エラーはいっさいありません。ただ計算式が間違ってるだけです 3回入力し、1回目10, 2回目20、 3回目30と入力すると出力結果は20が返ってきました。 要件は入力した数字分の合計を求めるという物です。 けど20が返ってくるってことは平均を出力しているってことですよね? 考えてもわからなくってアドバイスお願いします。
- ベストアンサー
- JavaScript
- javascriptの九九の表の書き換えについて
var a; for (a=1; a<10; a++) if (a<=1){ document.write(" "+a); }else{ document.write(" "+a);} document.write("<br>"); document.write("---------------------------------"); document.write("<br>"); var i, j; for (i=1; i<10; i++) { document.write(i+"|"+" "); for (j=1; j<10; j++) { var k = i*j; if ( k > 81 ) { break; } if (k>=10){ document.write(" "+k+" "); }else { document.write(" "+k);} } document.write("<br />"); } forを使った九九の表はできたのですが これをwhileを使ったコードに書き換えるにはどうしたらいいでしょうか?
- 締切済み
- JavaScript
- 配列 平均値と分散値
#include <stdio.h> void mean_vari(int *s, int n, double *mean, double *variance); int main(void) { int i, n; int a[]={34, 54, 21, 80, 60, 90, 15, 24, 100}; double heikin, bunsan; mean_vari(&i,n,&heikin,&bunsan); printf("平均=%f 分散=%f\n",heikin,bunsan); return (0); } /* 合計を求める関数 */ void mean_vari(int *s, int n, double *mean, double *variance) { int i; int sum=0; /* 合計の初期化 */ double sum2=0; for (i = 0; i < n; i++) sum += s[i]; ????=sum/(double)????; for (i = 0; i < n; i++){ sum2 +=????; } ????=????; } 平均値と分散値を求めたいのですが、????の部分になりをいれていいかわかりません。 教えてください。
- ベストアンサー
- C・C++・C#
- 配列変数について
とても基本的なことなのですが <script l anguage = "JavaScript"> week = new Array("日", "月", "火", "水", "木", "金", "土"); hizuke = new Date( ); day = hizuke.getDay( ); document.write("今日の日付 = ", hizuke.getMonth( ) + 1, "月 ", hizuke.getDate( ), "日 ", week[ day ], "曜日" ); </script> このような配列変数ならば、new Date( )によって呼び出された日付に対応して week[ day ]のところが日付に変わることはわかります。 <head> <title> Java </title> <script language = "JavaScript"> function calc( ) { point = new Array( ); point[0] = ei.value * 1; point[1] = su.value * 1 ; point[2] = ko.value * 1; sum = 0; for( i = 0 ; i < 3 ; i ++) { sum += point[i ]; } goukei .val ue = sum; ave = sum / 3; heikin.value = ave; } </script> </head> <body> <hr> <br> 英語 <input type = "text" size = "8" name = "ei "> <br> <br> 数学 <input type = "text" size = "8" name = "su"> <br> <br> 国語 <input type = "text" size = "8" name = "ko"> <br> <br> <hr> <br> <input type = "button" value = "計算" onclick = "calc( )"> <br> <br>3教科合計 <input type = "text" size = "8" name = "goukei "> 点 : 平均点 <input type = "text" size = "8" name = "heikin"> <br> <br> <hr> </body> </html > このような平均点を求めるプログラムでも point = new Array( ); point[0] = ei.value * 1; point[1] = su.value * 1 ; point[2] = ko.value * 1; sum = 0; for( i = 0 ; i < 3 ; i ++) { sum += point[i ]; このように配列変数を使っているのですが、なぜ配列変数をこのように使っているのかが わかりません。 なぜ、平均点を出すときはnew Array( )の( )の中身は何もなくて、上記のような表現を しているのでしょうか? よろしくお願いします。。
- ベストアンサー
- JavaScript
- javascript 二つの配列を比較し等しいもの
すべてをdocument.writeする (x番目とi番目が等しいです。) タイトルが長くなってしまいました。 ひとまず、こんな形で実現できたのですが、もっとスマートな形でできないでしょうか・・? a=[2,9,8,4,3,5,7]//a配列 b=[9,2,4,5,7,3,8]//b配列 for(i=0;i<a.length;i++){ if(a[0]==b[i]){ document.write("a[0]と"+i+"が等しい<br/>"); } if(a[1]==b[i]){ document.write("a[1]と"+i+"が等しい<br/>"); } if(a[2]==b[i]){ document.write("a[2]と"+i+"が等しい<br/>"); } if(a[3]==b[i]){ document.write("a[3]と"+i+"が等しい<br/>"); } if(a[4]==b[i]){ document.write("a[4]と"+i+"が等しい<br/>"); } ~~~以下同じ略 } ※a配列b配列は同じ値をもっていますが毎回シャッフルされます。
- ベストアンサー
- JavaScript
- javascript
var sum = function(){ var result = 0; for(var i = 0; i < arguments.length; i++){ var tmp = arguments[i]; result += tmp; } return result; } document.writeln(sum(1, 3, 5, 7, 9)); このプログラムと function sum(){ var result = 0; for(var i = 0; i < arguments.length; i++){ var tmp = arguments[i]; result += tmp; } return result; } document.writeln(sum(1, 3, 5, 7, 9)); このプログラムでは実行結果は同じですが、 どちらのほうが良いプログラムなのでしょうか?
- ベストアンサー
- その他(趣味・娯楽・エンターテイメント)
- お願いしますjavascriptです
javascript 初心者なのですが、どうしてもわからないため、 ご教授お願いたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>おみくじ</title> </head> <body> <script type="text/javascript"> <!-- //0~4の乱数を作る //0:大吉, 1:中吉, 2:小吉 ,3:吉, 4:凶 var rnd = Math.floor(Math.random() * 5) //おみくじの判定 switch (rnd){ case 0: var fortune = "大吉"; break; case 1: var fortune = "中吉"; break; case 2: var fortune = "小吉"; break; case 3: var fortune = "吉"; break; default: var fortune = "凶"; break; } //おみくじの表示 document.write("今日の運勢: " + fortune + "<br />"); //金運の表示 document.write("金運: "); var money = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < money; i++) { document.write("(ダイヤ)"); } document.write("<br>"); //恋愛運の表示 document.write("恋愛運: "); var love = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < love; i++) { document.write("♥"); } document.write("<br>"); //健康運の表示 document.write("健康運: "); var health = Math.floor(Math.random() * 5) + 1; var i = 0; while (i < health){ document.write("(クラブ)"); i++; } document.write("<br>"); //--> </script> </body> </html> このソースに、分岐だと考えますが、 大吉が出た時は、金運、恋愛運、などのマークが3つ以上に設定、逆に 今日ならば各マークが3つ以下に設定するには Javascriptでどういう風に記述すればよいでしょうか。
- 締切済み
- JavaScript
- JavaScriptで総和を求めるプログラム
数値を入力させて総和を求めるプログラムなんですが、ブラウザが真っ白で何も出ません。 どこが間違っているのでしょうか。ブラウザはfirefoxです。IEでやってみたら、窓は出ますが、undefinedの文字が表示されていて、数字をそこに入力しても何も出ません。 <html> <body> <script> s=0; n=parselnt(prompt("nを入力してください")); for(i=1;i<=n;i++){ s=s+i; } document.write("s=",s); </script> </body> </html>
- ベストアンサー
- JavaScript
- 2つの配列のソート
配列のソートについての質問です。 よろしくお願いします。 var syouhin = new Array(10); //商品名 var kosuu = new Array(10); //商品個数 syouhin[0] = "apple"; syouhin[1] = "orange"; ... syouhin[9] = "banana"; kosuu[0] = "4"; kosuu[1] = "2"; ... kosuu[9] = "5"; 個数は[]の数字の商品に対応。 個数をソート kosuu.sort(); ここでソートした個数に対応して商品もソートして、 for (i=0; i<kosuu.length; i++){ document.write(syouhin[i],kosuu[i],", "); document.write("<br>"); } と表示したいのですが、ソートした個数に対応した商品のソートの 仕方がわかりません。 どのような方法があるのでしょうか? よろしくお願いします。
- ベストアンサー
- JavaScript
- JavaScript 変数をメソッドに代入する方法
<SCRIPT LANGAGE="JavaScript"> var prop=new Array("title","lastModified","bgColor","fgColor","alinkColor","linkColor","vlinkColor"); for(i=0; i<7; i++){ document.write(document.prop[i],"<BR>"); } </SCRIPT> お世話になります。 上記ソースが動きません。 オブジェクトのメソッドに配列を代入することはできるのでしょうか?
- ベストアンサー
- JavaScript
お礼
ご回答ありがとうございます! おかげさまで無事に正しいプログラムを作ることができました。 文字列を整数化する、という基本的なところを忘れていたのですね。 とっても助かり、そして参考になりました。 ご親切に、どうもありがとうございました。