🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

Q&A

解決済

3回答

465閲覧

入力した最大値まで加算または乗算したい

Ssanswer

総合スコア11

JavaScript

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

0グッド

1クリップ

投稿2019/11/01 04:02

編集2019/11/01 06:02

前提・実現したいこと

JavaScriptで入力した数までの
数字を加算または乗算してその結果を求めたいんですが
乗算の方はどうすればいいでしょうか?

発生している問題・エラーメッセージ

エラーメッセージ
var kazu = prompt("半角で0~9までの値を入力してください");
var kazu2 = prompt("足しますか?かけますか?");
var kazu3 = 0;
while(kazu3 <= kazu){
kazu++
kazu3 = kazu3 + kazu;
}
console.log("結果" + kazu3);

 エラーは出てないんですがkazuに5と入力した場合、kazu3に13が出力されます。

該当のソースコード

JavaScript

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

BluOxy

2019/11/01 04:11

何のエラーでしょうか。エラーメッセージがないので回答できません。 また、エラーが分かれば解決でしょうか。 もしくは、入力した最大値まで加算または乗算ができればゴールでしょうか。 お手数ですが、上記の問いを参考に、質問内容をもう少し詳細に記載してください。
yambejp

2019/11/01 04:11

> 半額で0~9までの値 とはどういう意味でしょうか?
Ssanswer

2019/11/01 04:15

入力した最大値まで加算または乗算できればゴールです
BluOxy

2019/11/01 04:19

それを目指す過程のどこで躓いているのでしょうか。 このサイトは1~10を教えるサイトではないので、ある程度は自分でアクションを起こす必要があります。なので、躓いた箇所に対して試したことを書いてください。 質問は編集できるので、そちらに記載するようお願いします。
dice142

2019/11/01 05:46

> エラーが出ます に対して > エラーは出てないんですが とあったり、 > kazuに5と入力した場合、kazu3に14が出力されます とありますが、コードを見ると14になりそうにありません。 質問文を見直して矛盾がないようにしてください。
dice142

2019/11/01 05:47

あとkazuという変数の宣言部分が消えてしまっていますので戻しておいていただけると。
kaputaros

2019/11/01 05:55

半額→半角??
Ssanswer

2019/11/01 05:55

kazuの部分は自分で入力する形になっています
dice142

2019/11/01 06:01

えっと、 > 乗算の方はどうすればいいでしょうか? と > エラーは出てないんですがkazuに5と入力した場合、kazu3に13が出力されます。 とありますが、どっちですか? 加算は出来てるから乗算の考え方を知りたいのか 加算の処理が理想通りにならない理由を聞きたいのか、どちらでしょう?
Ssanswer

2019/11/01 06:03

説明不足すいません。 乗算の考え方が知りたいです
guest

回答3

0

果たしてループが必要なのでしょうか?
0から始めた乗算は0では?

javascript

1var kazu = parseInt(prompt("半角で1~9までの値を入力してください")); 2var tasizan=Array(kazu).fill(null).map((x,y)=>y+1).reduce((x,y)=>x+y); 3var kakezan=Array(kazu).fill(null).map((x,y)=>y+1).reduce((x,y)=>x*y); 4console.log([tasizan,kakezan]);

投稿2019/11/01 08:10

yambejp

総合スコア116661

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

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

0

ベストアンサー

(加算の方も理想の動きとは異なっていますが乗算の方でということなので。)

現状のコードでは加算しかしないので、kazu2の変数を見て処理を分岐する必要があります。

1~kazuまでの乗算であれば、1~kazuまでループして、
都度乗算した値を保存用変数に格納しましょう。

このときに注意ですが、乗算であれば0が入った時点で全て0になります。
保存用変数の初期値には気を付けてください。

また、入力範囲が0~9なので、0を入力した場合どうなるかも考慮するべきかと思います。
(この辺の仕様がどうなってるかわからないので適宜判断してください)

要は

1. 加算・乗算判定 2. 保存用変数初期化 3. 1~指定数までループ 3-1. 保存用変数に都度乗算

という形になります。


なお、加算の方も正しく出来ていないかと思います。
おそらくkazu~kazu+1のループにしかなっていないです。

投稿2019/11/01 06:13

編集2019/11/01 06:15
dice142

総合スコア5158

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

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

0

変数名を数学的に書かずに、適当な英単語にすると分かりやすくなります。

  • max 入力された最大値
  • ope 演算子(オペランドの略)
  • ans アンサー

javascript

1var max = prompt("半角で0~9までの値を入力してください"); 2var ope = prompt("足しますか?かけますか?"); 3var ans = 0; 4while(ans <= max){ 5 max++ 6 ans = ans + max; // 加算処理 7} 8console.log("結果" + ans);

5と入力した場合のループは

  1. max++; ans = ans + 6; (max==6, ans==6)
  2. max++; ans = ans + 7; (max==7, ans==13)

ループを抜ける。

出力は13です。

乗算処理を実現する場合、ope(入力した演算子)を条件式にした if 文で切り分けると良いです。

投稿2019/11/03 09:23

AkitoshiManabe

総合スコア5434

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問