• 締切済み

面積の最大値を求めるプログラム

エンジニア志望の大学生です。 今日、エンジニアの筆記試験で 「周の長さが22、高さがkの四角形があり、この面積をmenseki(k)とする。menseki(k)を1から10まで計算し、その中での最大値を返すようなプログラムを書け」 という問題が出題されました。 時間切れで解けなかったのですが、気になったので家で解いてみようと思い、考えています。 JavaScriptで書いているのですが、以下のところまで考えました。 var shu=22; var height=k; var width=(shu-height*2)/2; function menseki(k){ for(var i=1; i<11; i++){ return width*height; } } イメージでは 1. 周、高さ、横の長さの変数設定 2. functionでmenseki(k)の値を求める(for文で1~11まで繰り返す) 3. menseki(1)~menseki(11)の値を配列に入れる 4. 配列を大きい順にソートする 5. 最も大きい値を取り出す と考えたのですが(上記のソースでは、2まで書いたつもりです)、new Arrayで1~11まで指定するのは煩わしいし、他によい書き方はないか考えています。 他の書き方があれば教えてください。 あと、上記の書き方だとどのように書けるかも教えていただけると幸いです。

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

四角形ではなくて長方形ですよね? 四角形なら数学的に面積を決定することはできません あと関数mensekiは面積を返すだけなので その中で他のことをするのはルール違反だと思います 長方形の縦と横の和は周の長さの半分ですよね? よって高さがkなら幅は22/2-k それらの積が面積です よってmenseki(1)~menseki(10)の返り値を配列に入れ、 Math.max.applyを使ってその配列の最大値を求めれます あとはそれを返せばOKです <script> n=saidaichi() alert(n) function saidaichi(){ for(var n=[],k=1;k<=10;++k)n.push(menseki(k)); return Math.max.apply(Math,n) } function menseki(k){ return k*(22/2-k); } </script>

関連するQ&A