今日は1円貯金し、あすは倍の2円、その翌日はさらに倍の4円というように、前日の倍の
金額を預金していったら何日で10万円を超えることができるのかを調べる。

<html>
<head>
<script language="JavaScript">
<!--
function hyozi(){
 var gaku,day,total;

 total=0;
 day=1;
 gaku=1;
//ループここから
 while(total<100000){
  total=total+gaku;
  document.write(day+"日目 "+total+"円<br>");
  gaku=gaku*2;
  day++;
 }
//ループここまで
}
//-->
</script>
</head>
<body>
今日は1円貯金し、あすは倍の2円、その翌日はさらに倍の4円というように、前日の倍の
金額を預金していったら何日で10万円を超えることができるのかを調べる。
<form name="form1">
<input type="button" value="表示" onclick="hyozi()">
</form>
</body>
</html>
【解説】
関数「hyozi」ボタン動作用
変数1「gaku」毎日貯金する額 初期値は0
変数2「day」経過日数 初期値は1(1日目からなので)
変数3「total」預金額合計 初期値は1(1日目は1円)


この問題ではwhile文を使います。while文は指定された条件に
達するまでずっとループしつづけます。
ここでは total<100000 つまり10万円に達するまでループしつづけ
るようにすればいいのです。
total=total+gaku では、合計額に預金を追加しています。
gaku=gaku*2 で翌日の貯金する額を2倍にしています。
その処理が終了して、day++で次の日に移行するのです。
表示部分は貯金をした後、total=total+iの次の行にdocument.writeを
追加すれば問題なく動作すると思います。
【答え】
1日目 1円
2日目 3円
(中略)
17日目 131071円

ちなみに、document.write・・・を
gaku=gaku*2に入れても同じように表示されます。しかし、
day++の次の行に入れると、1日余分にかかってしまいます。さらに、
day++の次 } の下に入れると1日余分にかかった上に1〜17日目が省かれます。

戻る