公式アカウントからの投稿が始まります

質問です
任意に何個の数字を入力するかを prompt 窓で入力する(10を入力したとすると10回 prompt 窓を出す)。
それらの回数 prompt 窓を出して数字を入力する。入力した数字のうち、最大値を表示するプログラムを作成せよ。
ヒントがあります、
入力した値を繰り返しによって、配列の代入します。a[count]=window.prompt~。
その後、最大値を決めます。
if ( a[count] < a[count+1] )
{
saidai = a[count+1];//大きかったらストックする

A 回答 (3件)

> 講義では使っていない



そういう事を言う人がいるんですが、基本的には「くだらない」んですよね。
何故なら、プログラミングは義務教育ではない(まぁ、今は小学生が頑張ってるみたいですが)。
「講義で教えてないから」減点するような先生っていないでしょう。いたらそいつはバカなだけです。
むしろ、「講義で教えてない」事を自分で進んで調べて活用出来るようじゃないと先が無いですよ。
っつーか、そもそもプログラムって「動けば正解」なんですよ。貴方だけでなく、プログラムのユーザーはプログラムがどんな実装されてるか、なんか気にしません。それよりも「正しく動いた」事が重要視されます。
貴方はエクセルがどんな風に実装されてるのか気にした事ありますか?僕はないし、誰も無いんですよ。

それと「ヒント」はあくまでヒントであって、それ使って実装しろ、って意味じゃないですよね。仕様とヒントは違います。
また、JavaScriptは大勢の人(JavaScriptを使ってる人でさえ)勘違いしてますが、名前にJavaがついてるんで、Javaの仲間だとか、あるいは良くてC系言語の一種と思われてますが、真実は違います。実際は関数型言語(HaskellとかOCaml等のマイナーな言語)の仲間です。
この「ヒント」は、敢えていうと、C系言語的にJavaScriptを使え、と言う、言語設計根幹から言うと相当勘違いしてる・・・と言うかミスリーディングを含む、あんま良くない質の問題なんですよね。

// ここから

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>

<script>
var count = parseInt(prompt(), 10);
var a = Array(count)
for (let i = 0; i < count; i++) {
 a[i] = parseInt(prompt(), 10);
}
alert(Math.max.apply(null, a));
</script>

</body>
</html>
    • good
    • 1
この回答へのお礼

ありがとうございます
さっそく
提出済ませました

前回にも
他の課題で何か怪しそうなのもがありました
質の悪いというか筋の良くない問題のように思えました

こんな先生の鼻を明かしてやりたいものです
引き続きお時間が許せれば、ご教授願えればありがたいです

osamu

お礼日時:2021/06/15 22:45

> 他の課題で何か怪しそうなのもがありました


> 質の悪いというか筋の良くない問題のように思えました

多分貴方の直感は正しい。
意外と「C言語がすべての基本」って勘違いしてる人が多いんで、そういう「都市伝説」をズッポリ徹頭徹尾信じてるとそういう悪問が多くなってくる。
関数型言語は全く別のパラダイムに存在してる。従って関数型言語で「C言語のように考える」のは愚策です。
そして先にも書きましたが、見た目はC言語系構文に似せてますが、JavaScriptの実態はむしろ関数型言語です。少なくとも初期の設計目標はその辺にある。

JavaScriptのような関数型言語だと押さえるべきツボは実は次の4つしかないです。

・無名関数に慣れる事
関数式:
https://developer.mozilla.org/ja/docs/Web/JavaSc …

・Mapメソッドを使いこなす事
Array.prototype.map():
https://developer.mozilla.org/ja/docs/Web/JavaSc …

・reduceメソッドに慣れる事
Array.prototype.reduce():
https://developer.mozilla.org/ja/docs/Web/JavaSc …

・applyメソッドに慣れる事
Function.prototype.apply():
https://developer.mozilla.org/ja/docs/Web/JavaSc …

重要度は上から順に、です。
この4つは関数型言語ではどれも最重要と言って良い機能で、逆に言うとどの関数型言語にも搭載されています。
そしてこれらはC言語にはない凄まじく強力な機能で、Javaなんかでもつい最近までは入ってなくて言語設計者的には垂涎の機能でした。
実のトコ、ユーザーにとってはさほどでもなかったんで、実際これらを取り込んだJavaではしばらくユーザーを混乱させたくらい、です(現在でも継続中?)。
また、C++/C#なんかでもどっちかっつーと「謎の機能」な扱いになってますね(笑)。あっちの世界で使いこなせる人は「魔術師」扱いでしょう(笑)。
特に、Mapメソッド+無名関数は関数型言語では使いまくられるコンビネーションです。何かあったらまずこのコンビを使えないか、試行錯誤するようになれば技術が凄く上達すると思いますよ。
    • good
    • 1

<!DOCTYPE html>


<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>

<script>
var count = parseInt(prompt(), 10);
let a = []
while (count > 0) {
 a.push(parseInt(prompt(), 10));
 count--;
}
alert(a.reduce(function(x, y) {return Math.max(x, y)}));
</script>

</body>
</html>
    • good
    • 0
この回答へのお礼

ありがとうございます
ばっちりできました

a.push(parseInt
a.reduce(function(x,y){return
を使わずにはできないでしょうか?
講義では使っていないので、その解答も教えていただければたすかります

osamu

お礼日時:2021/06/15 20:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!