質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

2593閲覧

javascriptのプログラミングが分かりません

Alpha

総合スコア41

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2016/06/07 08:57

編集2016/06/09 03:13

任意の 0でない自然数 n をとり、 n が偶数の場合は n を2で割り、 n が奇数の場合は n に 3をかけて 1を足す。」という操作繰り返すと、有限回で1に到達するという 「コラッツの問題」。これを 1,000 から 5,000の任意自然数について確かめるプログラム作成したいんですがうまくいきません。

ちなみに「1,000から5000までの自然数(n)を入力して下さい」というダイアログボックスを表示した後、
alertでそれ以外の数字を入力してしまった場合は「入力した自然数(n)が間違っています。」を表示します。
逆に入力した数字が条件内であれば「入力した自然数(n)は[n]です。」と表示し改行した後1に達するまで「n=[n]は偶数:[n]/2=[n/2]」or「n=[n]は奇数:[n]3+1=[n3+1]」を計算し表示し続けるものになります。

一応、自分が書いたプログラムはこんな感じです。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>コラッツ</title> </head> <body> <script> var i = prompt("1,000から5,000までの自然数(n)を入力して下さい。",""); if(i<1000||5000<i){ var i = alert("入力した自然数(n)が間違ってます。"); }else{ document.write("<p>入力した自然数(n)は" + i + " です。</p>"); while(i!=0){ if(i%2==0){ document.write("<p>n=" + i + "は偶数:" + i + "/2=" + i/2 +"</p> "); }else{ document.write("<p>n=" + i + "は奇数:" + i + "*3+1=" + i*3+1 +"</p> "); } return i; } } </script> </body> </html>

よろしくお願いします。

<追記>

while文のループをnが1に達したら抜け出せるようにしたいのですがどうしたらいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2016/06/07 09:09

HTML部分は```で囲むと見やすくなります。
masaya_ohashi

2016/06/07 09:34

「、(読点)」ではありません。Shiftを押しながら@の「`」です
masaya_ohashi

2016/06/07 10:03

回答に合わせて質問文を修正するのは、本質でない箇所だけにしないと後から見た人が「なにが間違っていたのか」がわかりません。動かなかったころのコードを変えてはいけません。
guest

回答3

0

ベストアンサー

whileの条件が、このままではi==1に到達しても終わらないので、条件文を直しましょう。
それと、iを更新するヒントです。自分で考えてみてください。

if(i%2==0){ document.write("<p>n=" + i + "は偶数:" + i + "/2=" + i/2 +"</p> "); // iを割る2したものiに入れなおす処理をここに書きましょう }else{ document.write("<p>n=" + i + "は奇数:" + i + "*3+1=" + i*3+1 +"</p> "); // iに3を掛けて1を足したものをiに入れなおす処理をここに書きましょう }

投稿2016/06/07 09:39

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alpha

2016/06/07 09:55

whileの条件を1に達する以外で終わらすにはどのような考え方をしたらいいのでしょうか?
masaya_ohashi

2016/06/07 09:56

今のコードはiが0でない間継続するようになっています。 iが1より大きい間、と条件を変えてみてはどうでしょう。
Alpha

2016/06/07 10:02

while(i!=0)をwhile(1<i)に修正したらできました! ありがとうございます!
guest

0

n が偶数の場合は n を2で割り、 n が奇数の場合は n に 3をかけて 1を足す

この処理が抜けています。プログラムで言えば n は i ですから、この文の処理になるように処理を追加したら動くはず。

javascript

1while(i!=0){ 2 if(i%2==0){ 3 document.write("<p>n=" + i + "は偶数:" + i + "/2=" + i/2 +"</p> "); 4 i=i/2; //←これを追加 5 }else{ 6 document.write("<p>n=" + i + "は奇数:" + i + "*3+1=" + i*3+1 +"</p> "); 7 i=i*3+1; //←これを追加 8 } 9}

投稿2016/06/07 09:40

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alpha

2016/06/07 09:56

プログラムのほう、修正して実行したのですがやはりwhileのループから抜け出せず実行結果が表示されません。
PineMatsu

2016/06/07 12:31 編集

while(i!=1) にすれば抜けるはず。
guest

0

Javascript

1return i;

この一行で処理中であろうとループを抜けてしまっています。
また、iの値が更新されないため、whileループが無限に回り続けるようになっています。そこを修正してみましょう。

投稿2016/06/07 09:13

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/07 09:18

こちらでも回してしまって、えらい目に合いましたw ちゃんと見てから動かせばよかった^^;
Alpha

2016/06/07 09:25

while文のループをnが1に達したら抜け出せるようにしたいのですがどうしたらいいのでしょうか? return i;の件申し訳ないです。修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問