• 締切済み

反復処理について

大学で勉強を始めたばかりの物です。 入力された5つの数値の合計を反復を用いて求めるプログラムを 作成したいのですが、 自分で考えても限界があり、どうすれば良いのかご指摘下さいm(__)m <pre><script type="text/javascript"> <!-- // 変数の宣言 var i, x, sum; // i:カウント,x:入力,sum:合計 // 入力・計算 sum = -Infinity; for (i = 1; i <= 5; i++) { x = Number(prompt("x" + "= ?")); if("x" + i + " = ?") sum= x ++ } // 出力 document.writeln("合計は"); document.writeln(sum + " です"); // --> </script></pre>

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★大学で勉強を始めたばかりなんだ。 ・大学のどんな授業で JavaScript を教えているのか興味がわきます。  まぁ、私の興味はさて置き本題です。  反復(ループ)して合計を求めるには単純に変数に入力した値を加算すればよいのです。  そして、反復文は for、while 文で繰り返しますが、今回は for 文が適していますね。  それではサンプルを見ていきましょう。 サンプル: var data = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; var sum = 0; ←初期化 for ( var i = 0 ; i < data.length ; i++ ){  sum += data[ i ]; ←加算 } document.write( 'sum=', sum, '<BR>' ); 解説: ・上記のサンプルは data テーブルに格納されている 1~10 までを合計して出力する単純なものです。  ここで重要なのが sum = 0; の初期化部分です。  最初にゼロにしておかないと sum という変数にどんな数が入るか分からないため NaN エラーに  なってしまいます。注意! ・あと sum += data[ i ]; の部分で data[i] の値をどんどん加算しています。  さらに for 文の条件 i < data.length で繰り返しの条件判定を行っています。  以上を踏まえて今回の質問を考えると次のようになります。 本題: // 変数の宣言 var i, x, sum; // i:カウント,x:入力,sum:合計 // 入力・計算 sum = 0; ←初期化 for ( i = 0 ; i < 5 ; i++ ){ ←一般に 5 回ループする場合はこの記述です。  x = Number( prompt("x = ?") );  sum += x; ←加算 } // 出力 document.writeln( "合計は", sum, " です" ); その他: ・加算部分は回答者 No.1 さんのように1行で記述することも出来ます。  いちいち x 変数に代入しなくても Number() の戻り値をそのまま sum に加算できるのです。 ・あと document.writeln() 内の文字列は + 文字での連結のほかにカンマ文字での連結も  行えます。どちらでも結果は同じですのでお好みで。 ・以上。参考に。

  • Rayderl
  • ベストアンサー率83% (40/48)
回答No.1

promptで入力されたものの合計を表示したいのですよね。 だとしたら、まずsumの初期値はゼロでなくては変でしょう。 とにかく加算したいのですから、if文も不要。 さらにsumの加算部分の書き方が間違っています。 というわけで、入力・計算の部分を次のようにすれば合計が表示されます。 // 入力・計算 sum = 0; for (i = 1; i <= 5; i++) { x = Number(prompt("x = ?")); sum += x; }

関連するQ&A

  • ▲▲JavaScriptに詳しい人見てください▲▲

    入力された複数の (不定個の) 数値の合計を求めるプログラム . 空の入力でデータ入力の終了を表すものとする (少なくとも1個はデータを入力するものとする). をつくる課題が出ているのですが、 なかなか上手く行きません。 1: 2: <title>JavaScript Sample 4-2</title> 3: <script type="text/javascript"> 4: <!-- 5: // 変数の宣言 6: var i, x; 7: 8: // 入力・計算 9: x = Number(prompt("?")); 10: i = prompt("?"); 11: while (x != "") { 12: for(i = 1; i <= Number(x); i++){ 13: i +=Number(prompt( i + "つ目の数字を入力してください")); 14: } 15: } 16: 17: // 出力 18: document.writeln("<p>合計は " + x + " です.</p>"); 19: 20: // --> 21: </script> というのを1番始めに打ったのですが、 意味不明なことになってしまうことに気付いて 9~15行目の部分を,書きなおすと x = Number(prompt("?")); i = prompt("?"); while (x != "") { i +=Number(prompt("数値を入力してください")); } としましたが,これだと無限ループから抜けられませんし… かなりめちゃくちゃなことをしていることは分かるのですが どこをどう直せばいいかわからないレベルなんです。 ご教授いただければ幸いですっ

  • 自然数を序数に

    大学で、勉強をはじめたばかりの者です。 1~20の自然数を入力して、その数に対応する序数を表す プログラムを作成したいのですが、 自分で作ると以下のようになりました。 どこをどう直せばちゃんと実行できるようになりますか?(>_<) <pre><script type="text/javascript"> <!-- // 変数の宣言 var number; // 入力 number = prompt("1~20の自然数を入力して下さい"); //(計算?) 出力 switch(number) { case "1": document.writeln("1st"); break; case "2": document.writeln("2th"); break; case "3": document.writeln("3rd"); break; default: document.writeln("number + th"); } // --> </script></pre>

  • 開いたウインドーの、ハンドルはどこに?

     ウインドー、オープンは、できたのですが、  その新ウインドーの要素・   エレメントの、ハンドルがわかりません。  オープンした返値、 Widが、 別ウインドーのハンドルじゃ、ないのでしょうか  親ウインドーから、新ウインドーの内容を読み出したいのです。   <html> <head> <script language="JavaScript" type="text/javascript"> wid = window.open("http://kikitai.teacup.com/205/c221.html"); var taglist = ""; for (i = 0; i < wid.document.all.length; i++) { taglist += wid.document.all(i).tagName; taglist += " "; } //tx_hd = wid.prompt( taglist, ); document.writeln("<pre>"); document.writeln("AAA"); document.writeln(taglist ); document.writeln("AAA"); document.writeln(wid ); document.writeln("</pre>"); </script> </head> <body> オープンウインドー テスト<br> </body> </html>

  • 問題の個数を数える。

    最近Javascriptを学び始めたものです。 どうしてもわからないのでここに質問させていただきます。 <title>keisan.html</title> <pre><script type="text/javascript"> <!-- // 変数 i:カウント,n, m:問題,sol:正解,ans:解答, t:正解, f:不正解, var i, n, m, sol, ans ,t ,f; // 10回反復 for (i=1; i<=10; i++) { // 問題作成 n = Math.floor(Math.random() * 10) + 1; m = Math.floor(Math.random() * 10) + 1; sol = n + m; // 正解の保存 // 出題 ans = Number(prompt("第" + i + "問:" + n + "+" + m + "=?")); // 判定 if (ans == sol) document.writeln("第" + i + "問:" + n + "+" + m + "=?"+"解答"+ ans +" " + "正解です。"); else document.writeln("第" + i + "問:" + n + "+" + m + "=?"+"解答"+ ans + " "+ "違います。 "+"正解は"+ sol +"です。") } //問題数のカウント document.writeln("正解した問題数は"+ t +"です。"); document.writeln("不正解だった問題数は"+ f +"です。") // --> </script></pre> ここまで書きました。 最後に正解と不正解の個数を画面に表示するようにしなければなりません。 問題の個数の数える変数(式)がわかりません。 わかる方、ヒントでもいいので教えてください。

  • 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で数値の和を求める際の処理

    宜しくお願いします。 下記のプログラムの場合、 a,b,c の何れかの値が一つでも未入力の場合、 計算結果が表示されません。 未入力の場合は「0」とみなして、結果を表示させるには、 どの様にしたらよろしいでしょうか。 ご教授ください。 <script> var sum = 0; sum += a; sum += b; sum += c; var result = sum; var x = result; var y = myFormatNumber(x);function myFormatNumber(x) { var s = "" + x; var p = s.indexOf(".");if (p < 0) { p = s.length; } var r = s.substring(p, s.length); for (var i = 0; i < p; i++) { var c = s.substring(p - 1 - i, p - 1 - i + 1); if (c < "0" || c > "9") { r = s.substring(0, p - i) + r; break;}if (i > 0 && i % 3 == 0) { r = "," + r; } r = c + r; } return r; } document.write(y); </script>

  • 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で書いているのですが、 実行して得られる平均の値が異常です。(*具体的には後述します) 正しい書き方を教えていただけたら幸いです。 仕様は ・実行と同時にポップアップウインドウで、「生徒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になってしまう、というようなものです。 原因がわからず困り果てております。 どなたかご親切な方、よろしくお願いします。

  • 3の倍数の合計値

    3の倍数を足した合計値を表示するにはどうすればいいか教えてください。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>for課題1</title> </head> <body> <script> var sum = 1; for (var i = 1; i <= 100; i++) { if (i % 3 === 0) { } sum += i; document.write(sum);} //表示がうまくいかない //1から100までの間で、3の倍数の数だけを足した合計値(1683)を表示したい </script> </body> </html>

  • javascriptの比較演算

    不可解な動作に困っています。 どなたかご教示ください。 <html> <body> <script type="text/javascript"> var a=8; if(10>a>0){document.writeln(a);} else {document.writeln("else");} </script> </body></html> だと、ブラウザで実行すると画面に8と表示されます。 一方 <html> <body> <script type="text/javascript"> var a=8; if(10>a>7){document.writeln(a);}else{document.writeln("else");} </script> </body></html> とすると、実行したときにelseと表示されます。 とても不可解です どうしてでしょうか。