• ベストアンサー

JavaScript

この問題をJavaScriptで解きたいのですがどの知識使えば解けますか? 解き方やヒントなど教えて頂けると幸いです

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6826/9706)
回答No.1

「テキストファイル」を扱うという問題は、JavaScriptは向いていないように思います。 JavaScriptはブラウザ上で動くので、ファイルを読み込むと言ったら、普通は一旦ファイルをWebサーバ上に転送し、httpでアクセスすることになります。 アクセスするためのファイル名(URL)もわかっていなければなりませんし、ソースにあらかじめファイル名を書いて置くぐらいなら、JavaScriptソース中に直接 const textdatas = [ 'line 1', 'line 2', 'line 3' ]; みたいにして書いた方が早いと思いますが… そうすると「テキストファイルを読み込む」っていう題意に沿わなくなってしまう気がします。 本当にローカルファイルにアクセスするAPIもありますが、使い方は面倒です。 >2013819HTML5のFile APIでローカルファイル情報取得してやんよ!!! >https://tokidoki-web.com/2013/08/file-api%E3%81%A7%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E3%82%84%E3%82%93%E3%82%88/ ---- コマンドラインモードもある言語(Perl、Windows Shell Script(WSH)、その他)であれば、「テキストファイルからの入力」って言うのは「標準入力」を読むように救ってリダイレクトすれば良いので、 perl スクリプト名.pl < 入力ファイル.txt みたいに実行すれば、「ファイルから読む」の部分は何も書く必要がありません。 一行読んで、処理をして、出力する。その繰り返しで良いという訳なのですが。 ---- まあブラウザ上でやるアイデアとしては、 (1)の問題の場合 フォームで <input type="text" id="N"> と言うような入力欄を用意して、ボタンを押したときにJavaSctiptを動かし、その欄の値を取得する。 結果は alert() ダイアログで表示する。 (2)の問題の場合 <textarea id="numbers"></textarea> みたいな入力欄を用意して、ボタンを押したときにJavaSctiptを動かす。 結果はHTML上に追加表示していくか、別の<textarea>欄を用意してそこに表示する。 みたいな方法が考えられます。 ---- また(1)の約数を求める方法ですが、単純に、2からNまでの数字で割っていってみて、割り切れたら(割った余りが0なら)、それが約数の一つ、ってことで数えていきます。 (2)の方は単なる文字列操作の練習ですかね。文字列長回数の繰り返し、文字列の一番右の文字を取り出して新しい結果文字列に追加していく。 1行終わったら出力。 みたいな感じです。 ---- サンプルとして、「入力した数字を2倍した値を表示」というものを書いてみました。 以下をhtmlファイルとして保存し、ブラウザで表示してみてください。 -- ここから -- <html> <head> <title>calc test</title> <script type="text/javascript"> function CalcDouble() { var N = document.form1.num1.value; alert(N + ' の2倍は ' + (N*2) + ' です'); } </script> </head> <body> <form name="form1"> 数字を入力してください: N= <input type="number" name="num1"> </form> <input type="button" value="計算" onclick="CalcDouble()"> </body> </html> -- ここまで --

関連するQ&A

専門家に質問してみよう