今だけ人気マンガ100円レンタル特集♪

お世話になります。
現在、スクールでJavaScriptの勉強しています。
宿題で以下のような問題がでました。

宿題
wihleを使ってダイアログボックスに入力した値が正解するまで、
ダイアログボックスを表示しつづけるプログラムを作成する

サンプルとして「数当てゲーム」という0~3までの数字のtrueとfalseを判定する
例題があり、このプログラムは最下段の通りです。

以下のプログラムを参考にwihleを使って、
ダイアログボックスに入力した値が正解するまで、
ダイアログボックスを表示しつづける

※間違いの時は「ハズレ!」のダイアログボックスで表示する。
↑「ハズレ!」表示の後で再度「数当てゲーム。0~2の数字を入力してね」を
正解するまで、繰り返し表示し続ける、にはどうすればよいのでしょうか?

お手数ですが詳しい方、説明の上手な方、教えて下さい。

※すいませんが、こちらの知識不足のため「○○すればいいよ」みたいな、
ご返答では理解できないと思います。

<script>
var number = Math.floor(Math.random() * 4);
var answer = parseInt(window.prompt('数当てゲーム。0~3の数字を入力してね。'));
var messege;

if(answer > 3) {
messege = '入力は0~3だよ!';

} else if(answer < number) {
messege = '残念でした!もっと大きい!';

} else if(answer > number) {
messege = '残念でした!もっと小さい!';

} else {
messege = 'あたり!';
}
window.alert(messege);
window.alert('答えは「' + number + '」でした');
console.log('終了確認')

</script>

質問者からの補足コメント

  • どう思う?

    宿題の意図していることとは違いますが、ここまで自力でできました
    解答時に文字数が足りなくて入力できない時は、画像を貼りつけていただければOKです。

    「【JavaScript】数当てゲームを作」の補足画像1
      補足日時:2018/12/10 02:42

A 回答 (3件)

> while内に「number = answer;」がいるんですね。



いや、ちがいます

answer = parseInt(window.prompt('再チャレンジだよ!'));

のようにpromptで受け取ったデータをanswerに入れないといけないという意味です
    • good
    • 1
この回答へのお礼

ありがとう

何回もありがとうございます。

>answer = parseInt(window.prompt('再チャレンジだよ!'));
のようにpromptで受け取ったデータをanswerに入れないといけないという意味です

意味がわかりました。
ダイアログボックスの上のメッセージに入力するところしか見てませんでした。

answer = parseInt(window.prompt('再チャレンジだよ!'));

この1行で、ダイアログボックスの上のメッセージとは別に、
入力された値を受け取って文字列を整数に変換してから、
「answer」に入れてるんですね。

「while」の中にもう1度書かないと
2回目以降に受け取った値を「number」と判定する方法がないので、
絶対に当たらないということですね。

先のように「number = answer;」にすると、
2回目の答えが「number」に入ってしまうので、
2回目に必ず当たってしまう、、、というのもわかりました。

サンプルの3行目に同じ構文があるのに漠然と読んでいました。

何度も解答して頂きありがとうございます。


※他の方が何かアドバイスしてくれるかもしれないので、
質問はしばらく開けておきます。

お礼日時:2018/12/10 14:51

while内のpromptをanswerが受けてないですよね


そうなるとanswerとnumber は一度はずすと二度と合致することはありません
それとif ( number == answer )のチェックでbreakしていますが
whileの条件と合致するのでわざわざbreakをしなくてもいいのかなと・・・
(あくまでもメッセージを切り替えるだけで十分)
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

>while内のpromptをanswerが受けてないですよね
そうなるとanswerとnumber は一度はずすと二度と合致することはありません

while内に「number = answer;」がいるんですね。
気が付かなかったです。
最下段のコードで思っていたとおり動作するようになりました。
※「break」の件もありがとうございます。

あと、、、すいませんが、1つ気になることがあります。
お手数でなければ、教えて頂ければうれしいです。
※お手数でしたらスルーでOKです。

今回は解答して頂きありがとうございます。
機会がありましたら、またお願いいたします。

<---->
最初に頂いたコードで、
どうして4行目が「var answer = -1;」になっているのですか?
整数型の指定なので「var answer = 0;」だと思うのですが、
どうして「-1」なのでしょうか?

動作確認したところ「var answer = 0;」でも
正常に動作するので、余計に不思議に感じます。

「var answer = 0;」が無難だと思うのですが、
もし何か意味があるのでしたら、教えて頂ければうれしいです。
<---->

<script>
var number = Math.floor(Math.random() * 3);
var answer = parseInt(window.prompt('数当てゲーム。0~2の数字を入力してね。'));

while ( number != answer ) {
console.log(number)
window.alert('ハズレ!');
parseInt(window.prompt('再チャレンジだよ!'));
number = answer;

if ( number == answer ) {
window.alert('当たり!');
}
else{
}
}
console.log(number)
console.log('最終行-動作確認')
</script>

お礼日時:2018/12/10 13:51

とりあえずキャンセルされたときの処理をいれる


あとはwhile内でpromptを呼びつづければよい
へたにparseIntすると答えが1のときに1.5とか入れても正解になるので注意
もちろんparseFloatしてるので答えが1のときに1.0を入力すると正解になります
きっかり"1"以外を受け付けないのであればそれなりの処理が必要です

<script>
var number = Math.floor(Math.random() * 4);
console.log(number);
var answer = -1;
var messege ='';
while(number!==answer){
answer = prompt('数当てゲーム。0~3の数字を入力してね。');
if(answer === null){
messege = 'キャンセルされました';
answer=number;
}else{
answer=parseFloat(answer);
if(![0,1,2,3].some(function(x){return x===answer;})){
messege = '入力は0~3だよ!';
} else if(answer < number) {
messege = '残念でした!もっと大きい!';
} else if(answer > number) {
messege = '残念でした!もっと小さい!';
} else if(answer == number) {
messege = 'あたり!';
}
}
alert(messege);
}
console.log('終了確認')
</script>a
    • good
    • 1
この回答へのお礼

解答して頂き、ありがとうございます。

バッチリです!

ありがとうございます。
後でベストアンサーを付けさせて頂きだきます。

もし、お手数でなければ、以下の件について教えて頂ければうれしいです。
※お手数でしたらスルーでOKです。
※他の人がアドバイスを下さるかもしれないので、しばらく質問はあけておきます。


昨日、自力で以下のところまで出来ました。
教えて頂いたコードと比べたのですが、シンプルになっているだけで、
差があるように思えないのですが、こちらのコードには以下の問題があります。

・1回目でハズレた場合、2回目以降、True、Falseの判定をしない
↑コンソールに表示された値を2回目に入力してもTrueの判定にならない

こちらはどうして2回目以降、True、Falseの判定が行われないのかわかりません。
↑ダイアログボックスは継続して表示しつづけます。

もし、何かお気付きのことがあれば、教えて頂ければうれしいです。
今回は解答して頂きありがとうございます。


<script>
var number = Math.floor(Math.random() * 3);
var answer = parseInt(window.prompt('数当てゲーム。0~2の数字を入力してね。'));

while ( number != answer ) {
console.log(number)
window.alert('ハズレ!');
parseInt(window.prompt('数当てゲーム。0~2の数字を入力してね。'));

if ( number == answer ) {
break;
window.alert('当たり!');
}
}

console.log(number)
console.log('最終行-動作確認')
</script>

お礼日時:2018/12/10 12:32

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

このQ&Aと関連する良く見られている質問

QPerlのプログラミングに困っています。

Perlでプログラムを書いています。
整数を1個受け取ってその整数の数だけコマンドプロンプト上に*の記号を使って縦横に左上の向きの直角三角形を表示させる方法はどのようにやるのでしょうか。
例えば「5」という数字を受け取った場合は
*****
****
***
**
*
のように表示させたいです。
宜しくお願いします。

Aベストアンサー

あなたのソースを多少修正しました。
以下のようにしてください。
---------------------------------------------
print '正整数を入力して下さい: ';
$n = <STDIN>;
chomp($n);

while ($n > 0) {
$y = $n;
while ($y > 0) {
print "+";
$y--;
}
print "\n";
$n--;
}

Qまちがっているところ

strSQL = " "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード, SUM(東京支店) AS TOKO"
strSQL = strSQL & " FROM"
strSQL = strSQL & " ( "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " *"
strSQL = strSQL & " FROM"
strSQL = strSQL & " [3学期$] "
strSQL = strSQL & " UNION ALL "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " *"
strSQL = strSQL & " FROM"
strSQL = strSQL & " [2学期$] "
strSQL = strSQL & " ) "
strSQL = strSQL & " GROUP BY 商品コード"
まちがっているところおしえてくれませんでしょうか

strSQL = " "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード, SUM(東京支店) AS TOKO"
strSQL = strSQL & " FROM"
strSQL = strSQL & " ( "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " *"
strSQL = strSQL & " FROM"
strSQL = strSQL & " [3学期$] "
strSQL = strSQL & " UNION ALL "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " *"
strSQL = strSQL & " FROM"
strSQL = strSQL & " [2学期$] "
strSQL = strSQL & " ) "
strSQL = strSQL & " GROU...続きを読む

Aベストアンサー

No.3です。

列数が一致しないとなっているならSheet構成がそれぞれで違うのではないですかね?(検証すると確かに列数が違うとエラーになる)

その場合それぞれのSheetでSELECTしたいフィールドを明確にする為に

strSQL = " "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード, SUM(東京支店) AS TOKO"
strSQL = strSQL & " FROM"
strSQL = strSQL & " ( "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード,東京支店" '★
strSQL = strSQL & " FROM"
strSQL = strSQL & " [3学期$] "
strSQL = strSQL & " UNION ALL "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード,東京支店" '★
strSQL = strSQL & " FROM"
strSQL = strSQL & " [2学期$] "
strSQL = strSQL & " ) AS 合計"
strSQL = strSQL & " GROUP BY 商品コード"

とフィールド名を記載したらエラーは消えましたよ。

No.3です。

列数が一致しないとなっているならSheet構成がそれぞれで違うのではないですかね?(検証すると確かに列数が違うとエラーになる)

その場合それぞれのSheetでSELECTしたいフィールドを明確にする為に

strSQL = " "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード, SUM(東京支店) AS TOKO"
strSQL = strSQL & " FROM"
strSQL = strSQL & " ( "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 商品コード,東京支店" '★
strSQL = strSQL & " FROM"
strSQL = strSQL & " [3学期$] "
...続きを読む

QJavascriptの出力結果をhtmlボタンで出力したい

JavaScript(ES6)で、半角英数字かどうかチェックする関数を作成し、その結果をhtml側でボタンを押すとBooleanとして出力したいです。下記のように作成しましたが、出力部分をどのようにすればよいでしょうか。よろしくお願いいたします。

<html>
<head></head>
<body>
<script>
const CheckHalfwidth = function(str) {
if(str.match(/^[a-zA-Z0-9]+$/)){ return true; }
else{ return false;}
}

const onButtonClick = function() {

}
</script>
<input type="text" id="txt1">
<input type="button" value="半角英数チェック" onclick="onButtonClick();">
<div id="output"> </div>
</body>
</html>

JavaScript(ES6)で、半角英数字かどうかチェックする関数を作成し、その結果をhtml側でボタンを押すとBooleanとして出力したいです。下記のように作成しましたが、出力部分をどのようにすればよいでしょうか。よろしくお願いいたします。

<html>
<head></head>
<body>
<script>
const CheckHalfwidth = function(str) {
if(str.match(/^[a-zA-Z0-9]+$/)){ return true; }
else{ return false;}
}

const onButtonClick = function() {

}
</script>
<input type="text" id="txt1">
<input ty...続きを読む

Aベストアンサー

とりあえずこんな感じ
<script>
const CheckHalfwidth = (str)=>{
return str.match(/^[a-zA-Z0-9]+$/)?true:false;
}
const onButtonClick = ()=>{
document.querySelector('#output').textContent=CheckHalfwidth(document.querySelector('#txt1').value);
}
</script>
<input type="text" id="txt1">
<input type="button" value="半角英数チェック" onclick="onButtonClick();">
<div id="output"> </div>

Q[html]ラジオボタンを使った診断の作成アドバイスをお願いいたします。

ラジオボタンを使った診断を作成したく、アドバイスを頂けますでしょうか。
html,cssで簡単なサイト作成ができる程度の知識しかなく、煮詰まっています。
html、javascript、jQuery…理想の形が作れれば形式は問いません。

ーーーーーーーーーーー
▼作成したい内容
・20問程度の設問
・設問に対して回答は3~5つ(ラジオボタン)
・診断結果は4種類(性格診断)→〇、△、□、×

ラジオボタンを使った診断系でよくみられるのが
「value」を使い、0,1,2…と数字を入れていく方法だと思うのですが、
ひとつの回答にひとつの点数ではなく、複数の別々の点数を当てはめたく困っています。

例)ーーーーーーーーーーー
【設問1】怒りを感じた時にあなたのとる行動は?
回答A:ふて寝        (点数→ 〇0点、△1点、□2点、×3点)
回答B:相手に怒りをぶつける (点数→ 〇1点、△2点、□0点、×3点)
回答C:第三者に愚痴を言う  (点数→ 〇2点、△0点、□1点、×3点)

【設問2】悲しいと感じた時にあなたのとる行動は?
回答A:引きこもる      (点数→ 〇3点、△0点、□0点、×1点)
回答B:泣き叫ぶ       (点数→ 〇0点、△1点、□2点、×4点)
回答C:誰かに共感を求める  (点数→ 〇4点、△3点、□1点、×0点)
回答D:楽しいことをする   (点数→ 〇2点、△4点、□3点、×2点)

↓↓↓
【診断結果】
〇:合計20点、△:合計18点、□:合計30点、×:合計9点
→一番特典の高い「□」タイプだと診断
ーーーーーーーーーーーーーー

このように、複数の点数を使い結果を表示したいのです。
なお、画像等は使わず、テキストだけのできるだけシンプルなページにしたいと考えています。

浅学でそもそもこの形式が可能かどうかもわかっていないのですが、、アドバイスを頂けますと幸いです。何卒宜しくお願いいたします。

ラジオボタンを使った診断を作成したく、アドバイスを頂けますでしょうか。
html,cssで簡単なサイト作成ができる程度の知識しかなく、煮詰まっています。
html、javascript、jQuery…理想の形が作れれば形式は問いません。

ーーーーーーーーーーー
▼作成したい内容
・20問程度の設問
・設問に対して回答は3~5つ(ラジオボタン)
・診断結果は4種類(性格診断)→〇、△、□、×

ラジオボタンを使った診断系でよくみられるのが
「value」を使い、0,1,2…と数字を入れていく方法だと思うのですが、
ひとつ...続きを読む

Aベストアンサー

こんにちは

一般的な解決法とは言えませんが、value属性を利用して簡便に値を設定する方法の一例です。
点数が0~9と考えて、例えば value="0123" の各桁を〇△□×に対応させるという考え方です。
ですので、数が増えたり点数の桁が増えたりするとそのままでは使えません。
ただし、そういった限定しているために処理はかなり簡単になります。

>浅学でそもそもこの形式が可能かどうかもわかっていないのですが
論理的に記述できる処理であれば、大抵の計算は可能だと思います。
以下は、「可能」ということの一例ですので、一般的な考え方ではありません。

ひとまず、判定をするだけの簡単なものにしてあります。
※ご質問文に無いので、未入力のチェックはしていません。
※IEはアロー記法に対応していないようなので、無視しています。

<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
#QA, #QA * { margin:0; padding:0; }
#QA { list-style-type:none; counter-reset:qnum; }
#QA li { margin-bottom:1em; counter-increment:qnum 1; }
#QA li p { display:inline-block; }
#QA label { display:block; margin-left:6.5em; }
#QA li::before { content:"【設問 " counter(qnum) " 】"; }

#diagnosis { margin:1em; padding:0.5em 1.5em; }
</style>

<script type="text/javascript">
document.addEventListener("click", (e)=>{
if(e.target.id != "diagnosis") return;

let result = [0,0,0,0], max = 0, idx;
document.querySelectorAll("#QA>li").forEach((elm)=>{
let inp = elm.querySelector('input[type="radio"]:checked');
if(inp){ inp.value.split("").forEach((v, i)=>{ result[i] += +v; }); }
});

result.forEach((v, i)=>{
if(v>max){ max = v; idx = i; }
});
alert("結果は " + "〇△□×".substr(idx, 1) + " です");
});
</script>
</head>

<body>
<ul id="QA">
<li><p>怒りを感じた時にあなたのとる行動は?</p>
<label><input name="Q1" type="radio" value="0123" />ふて寝</label>
<label><input name="Q1" type="radio" value="1203" />相手に怒りをぶつける</label>
<label><input name="Q1" type="radio" value="2013" />第三者に愚痴を言う</label>
</li>

<li><p>悲しいと感じた時にあなたのとる行動は?</p>
<label><input name="Q2" type="radio" value="3001" />引きこもる</label>
<label><input name="Q2" type="radio" value="0124" />泣き叫ぶ</label>
<label><input name="Q2" type="radio" value="4310" />誰かに共感を求める</label>
<label><input name="Q2" type="radio" value="2432" />楽しいことをする</label>
</li>
</ul>
<hr />
<input id="diagnosis" type="button" value="診 断" />
</body>
</html>

こんにちは

一般的な解決法とは言えませんが、value属性を利用して簡便に値を設定する方法の一例です。
点数が0~9と考えて、例えば value="0123" の各桁を〇△□×に対応させるという考え方です。
ですので、数が増えたり点数の桁が増えたりするとそのままでは使えません。
ただし、そういった限定しているために処理はかなり簡単になります。

>浅学でそもそもこの形式が可能かどうかもわかっていないのですが
論理的に記述できる処理であれば、大抵の計算は可能だと思います。
以下は、「可能」ということの一例...続きを読む

QJavaScriptの関数の戻り値につて

こんちは。
最近「JavaScript」を始めました。
簡単なことなのですが教えてください。
JavaScriptの基本なのですが、階層オブジェクトを関数の戻り値として返す方法です。
下記の様な場合でオブジェクト「xxx」下位階層「aaa」のみを返そうと思いました。
最初
return {xxx.aaa}
と書いていましたがエラーとなりました。
困っていると他の方から
return {'xxx' : xxx.aaa}
と書くんだよと言われました。
意味がわからなく調べてのですが分かりませんでした。
どなたか丁寧に教えていただける方お教えください。
また、ソースが間違っていても教えてください。
よろしくお願いします。

function sample() {
let xxx = {
aaa: {
a : 1,
b : 2,
c : 3,
d : 4,
e : 5
},
bbb: {
a : 1,
b : 2,
c : 3,
d : 4,
e : 5
}
};

return {
'xxx': xxx.aaa
}
}

こんちは。
最近「JavaScript」を始めました。
簡単なことなのですが教えてください。
JavaScriptの基本なのですが、階層オブジェクトを関数の戻り値として返す方法です。
下記の様な場合でオブジェクト「xxx」下位階層「aaa」のみを返そうと思いました。
最初
return {xxx.aaa}
と書いていましたがエラーとなりました。
困っていると他の方から
return {'xxx' : xxx.aaa}
と書くんだよと言われました。
意味がわからなく調べてのですが分かりませんでした。
どなたか丁寧に教えていただける方お教え...続きを読む

Aベストアンサー

aaa のオブジェクトのみを返すなら、素直に以下の方法が良いと思います
return xxx.aaa; // = { a:1, b:2, c:3, d:4, e:5 }

xxx と同じ構造であっても特定の値のみを返すなら、オブジェクトの複製が必要です
var neoxxx = {aaa:null};
for (var i in neoxxx) {
_ if (xxx.hasOwnProperty(i)) {
_ _ neoxxx[i] = xxx[i];
_ }
}
return neoxxx;

この処理を簡略化すると
var neoxxx = {};
neoxxx.aaa = xxx.aaa;
return neoxxx;

オブジェクト表記法を使って、もっと短縮すると
var neoxxx = { aaa: xxx.aaa };
return neoxxx;

もっと短縮すると
return { aaa: xxx.aaa };

項目名(プロパティ)は、引用符で囲むこともできます。
return { 'aaa': xxx.aaa };

参考: JavaScript のオブジェクト表記法
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer

aaa のオブジェクトのみを返すなら、素直に以下の方法が良いと思います
return xxx.aaa; // = { a:1, b:2, c:3, d:4, e:5 }

xxx と同じ構造であっても特定の値のみを返すなら、オブジェクトの複製が必要です
var neoxxx = {aaa:null};
for (var i in neoxxx) {
_ if (xxx.hasOwnProperty(i)) {
_ _ neoxxx[i] = xxx[i];
_ }
}
return neoxxx;

この処理を簡略化すると
var neoxxx = {};
neoxxx.aaa = xxx.aaa;
return neoxxx;

オブジェクト表記法を使って、もっと短縮すると
var neoxxx = { aaa: xxx.aaa };
ret...続きを読む

Qif文の判定について

こんにちは。
IF文の判定についておしえてください。

Checkboxにチェックが入っていればTRUE チェックがなければfalseと判定するプログラムです。

実行されたとき、ウオッチリストでみると ctrl.valueの値は「false」となってます。

パターン1では、d1=falseが実行され
パターン2では、d=tureが実行されます。

パターン1はわかりますが、なぜパターン2ではd=trureが実行されるのでしょうか?
よろしくおねがいいたします。

(提示した二つ以上の条件のどれかが成立すれば、実行される理解なのですが・・)


パターン1

For Each ctrl In TargetForm.Controls

If ctrl.Value <> False Then
d = True
Else
d1 = False
End If

Next
パターン2

For Each ctrl In TargetForm.Controls

If ctrl.Value <> False Or ctrl.Value <> "" Then
d = True
Else
d1 = False
End If

Next

こんにちは。
IF文の判定についておしえてください。

Checkboxにチェックが入っていればTRUE チェックがなければfalseと判定するプログラムです。

実行されたとき、ウオッチリストでみると ctrl.valueの値は「false」となってます。

パターン1では、d1=falseが実行され
パターン2では、d=tureが実行されます。

パターン1はわかりますが、なぜパターン2ではd=trureが実行されるのでしょうか?
よろしくおねがいいたします。

(提示した二つ以上の条件のどれかが成立すれば、実行される...続きを読む

Aベストアンサー

TRUE <> "" だから。


ところで、なぜこんなコードになっているの?
予想ではチェックボックスは1つしか無いのに、for each *** in *** の構文を使うなんて。

Qプログラミング入門者が、独学でプログラミング勉強を始めるとすれば何言語がいいでしょう? ブラウザで動

プログラミング入門者が、独学でプログラミング勉強を始めるとすれば何言語がいいでしょう?
ブラウザで動くjavascriptがいいと思ったのですが、将来的な拡張性、初心者に扱えるかを考えると、やはり自分で決めることができません。
アドバイスをお願いします。

Aベストアンサー

取り合えず、コーディングに親しむことを最優先にするなら
pythonかな。最初は楽な言語が良いでしょう。

Cはプロの現場でさえ、組込系を除いてほぼ絶滅状態。
最近は知ってる人が少ないです。

javascriptは癖が強いので、最初の言語としてはちょっと…
webをやるときに勉強すれば良いと思います。

JavaやC#はオブジェクト指向の呪いが多くて、
初心者には少しハードルが高い。

pythonは使い始めるのが簡単。最初は電卓がわりに使いはじめて
徐々に手順を組んで動かすことを覚えるなんてことが可能。
Javascriptと同様、複雑なデータ構造が簡単に表現できる。
構文が美しい。
只だし、開発元に日本語の資料が豊富。入門書も沢山有ります。
プログラマが好む言語としては、そのての各種ランキングで
だいたい今3位くらいです(^-^;

QプログラミングVBAについてです。 やり方を教えて下さい。よろしくお願いいたします。

プログラミングVBAについてです。
やり方を教えて下さい。よろしくお願いいたします。

Aベストアンサー

何かの課題のようなので、ヒントのみです。

どこがわからないのかも不明で、単なる丸投げ的な質問になっちゃってますが、大きく分ければ
・設問の意味や考え方がわからない
 (プログラミング言語とは関係なくアルゴリズム等の理解の問題)
・コードを作成できない
 (プログラムのフローを考える力と、言語知識の問題)
のどちらなのでしょうね?(両方なのかも)

ひとまず、このあたりが参考になるかも?
(検索すれば他にもいろいろ見つかると思いますが)
長方形積分と台形積分の説明とコード(C言語)
https://www.vcssl.org/ja-jp/code/archive/0001/3000-integral-rectangular/
https://www.vcssl.org/ja-jp/code/archive/0001/3000-integral-rectangular/

VBAでの例
https://excelmath.atelierkobato.com/trapzoid/

おまけ(シンプソン法の例)
http://shimaphoto03.com/program/simpson-vba/

何かの課題のようなので、ヒントのみです。

どこがわからないのかも不明で、単なる丸投げ的な質問になっちゃってますが、大きく分ければ
・設問の意味や考え方がわからない
 (プログラミング言語とは関係なくアルゴリズム等の理解の問題)
・コードを作成できない
 (プログラムのフローを考える力と、言語知識の問題)
のどちらなのでしょうね?(両方なのかも)

ひとまず、このあたりが参考になるかも?
(検索すれば他にもいろいろ見つかると思いますが)
長方形積分と台形積分の説明とコード(C言語)
ht...続きを読む

Q商品ページのフォームのテキストボックスに、商品名を自動入力させたい。

下記質問について解決したものと判断し締め切りましたが、確認するとformのinputのvalue内が空白になっていました。
回答者fujillin様の、
「setValue関数が確実にload後に実行されるように、
loadメソッドのcallback(complete)でsetValue関数を呼び出すようにしてください。」
「loadメソッド」「callback」「setValue関数」とか検索して色々と試してみましたが、理解しないままやっていますので何ら解決していません。
fujillin様、またはどなたかおわかりの方、どうぞ宜しくお願いいたします。

(質問内容)
現在、通販サイトを運営中で、それぞれの商品ページに問合せフォームを組み込んでいますが、その商品ページを訪問されるときにお客様はすでに商品名(長い記号番号)を入力されているので、問合せフォームで再度商品名を入力していただくのは酷と思い、formのinputのvalueに商品名をあらかじめ入力しておくようにしています。
<input type="text" name="希望商品" value="(商品名)" >

この度、商品数の増加に伴い、商品ページを簡略化するため、共通しているform部分をインクルードしたいのですが、その中の(商品名)を関連付ける方法を教えてください。

例えば、ABC123という商品名のページからの問合せの場合、インクルードされるform内が
<input type="text" name="希望商品" value=”ABC123”>
になるようにしたいのです。
ちなみにABC123という商品名は、その商品ページの中(form部分以外)に入力しています。

今まで下記の方法でOKだったのですが、この度確認するとformのinputのvalue内が空白になっていました。何が間違っているのでしょうか?

<!DOCTYPE html>
<html lang="ja">
<head>
<script>
$(function() {
$("#form").load("./form.html");
});
</script>
<script>
function setValue() {
var value = "(機種名)";
if (value) {
document.form._希望機種.value = value;
}
}
</script>
</head>
<body onload="setValue();">
<div id="form"></div>
</body>
</html>

---以下、別ファイル---
<form name="form" action="・・・>
<input type="text" name="_希望機種" size="50">
</form>

(fujillin様のご回答)
イマイチよくわかりませんが、ご質問文の一番下の「<form name="form"~~」以下の内容は、後から読み込もうとしている内容で、別ファイルという意味ですよね?
(今までは、直接htmlの中に記述されていたものと推測します)

>何が間違っているのでしょうか?
実行順をよく考えればわかると思いますが、後から読み込む方法の場合、「body onload」でsetValue関数が実行される時には、まだformの内容が読み込まれていない可能性が高いです。
ですので、値を設定するべき対象要素がまだ存在しないため設定はされず、その後に読み込まれた要素は空白のままということと推測します。

あるいは、要素の指定が正しくできていないかでしょう。
form要素にタグ名称と同じformのidを付けていて、「document.form」のような直接個別の名で指定する記述方法なので場合によっては、確実ではないことがあります。
目的要素にidがあるのですから、getElementByIdやquerySelectorを用いて指定する方が、安全で確実と思います。

さらには、ご提示のスクリプトを見るとjQueryなどのライブラリを用いているものと思われますが、ご提示のソースには、それを読み込んでいる記述がありません。
ですので、そもそも「$関数」でエラーになっていて動作していないだけという可能性もあります。
(記述を省略しただけなのかもしれませんが、全文書形式で記述してあるので・・・)
また、ライブラリを利用している場合は、前述の要素の指定でもそちらを利用した方が簡便かと思います。


状況がよくわからないので、とりあえず、実行順序に関しての対処法のみですが。
setValue関数が確実にload後に実行されるように、
loadメソッドのcallback(complete)でsetValue関数を呼び出すようにしてください。
(そうすることで順序が守られるはずです)
https://api.jquery.com/load/

下記質問について解決したものと判断し締め切りましたが、確認するとformのinputのvalue内が空白になっていました。
回答者fujillin様の、
「setValue関数が確実にload後に実行されるように、
loadメソッドのcallback(complete)でsetValue関数を呼び出すようにしてください。」
「loadメソッド」「callback」「setValue関数」とか検索して色々と試してみましたが、理解しないままやっていますので何ら解決していません。
fujillin様、またはどなたかおわかりの方、どうぞ宜しくお願いいたします。

(質...続きを読む

Aベストアンサー

No1です。

補足を見ました。追加のシースはきちんと読み込めているようですね。
ですので、原因は前回回答の最初のもの(タイミングの問題)だと思われます。
最後に記しましたように、loadで別ファイルを追加した後に、機種名を記入すればよいはずです。
そのためには、(前出のように)loadメソッドのcallbackを利用するようににしてください。
jQueryのloadの解説ページを再掲しておきます。
https://api.jquery.com/load/

ご提示の補足で、前半のスクリプトと後半のそれとでは、あまりにも内容や記述方法に隔たりが感じられますが、前半のものが書けるのであれば簡単なはずと思いますが・・・
(質問者様ご本人でなくとも、それを記述した方に相談すれば、すぐに解決すると思います)


ところで、スクリプト内に
>var value = " 商品名 ";
とありますが、これから想像すると
>商品点数が1000近くあるので~~
…って、このファイルが商品点数分作成されてるってことなのでしょうか???

まさか、そんなことはないでしょうから、サーバサイドでソース内に書き出しているってことかな?
とはいえ、その記入されたデータに基づいて、再度処理を行うという相当にまどろっこしい方法になっていませんか?

通常であれば、サーバサイドのプログラムで「商品のデータベース(あるいは商品リスト)などを参照して、雛形のページにその商品情報を埋め込んで吐き出す」ような構成にしておくのではないかと想像しますけれど…?
もし、そのようになっているのであれば、スクリプト内に商品名を記述するかわりに、直接htmlソースに記述するようにするだけで、ご質問のようにクライアント側で再度読み込むなどの処理を行う必要はなくなるものと思います。

No1です。

補足を見ました。追加のシースはきちんと読み込めているようですね。
ですので、原因は前回回答の最初のもの(タイミングの問題)だと思われます。
最後に記しましたように、loadで別ファイルを追加した後に、機種名を記入すればよいはずです。
そのためには、(前出のように)loadメソッドのcallbackを利用するようににしてください。
jQueryのloadの解説ページを再掲しておきます。
https://api.jquery.com/load/

ご提示の補足で、前半のスクリプトと後半のそれとでは、あまりにも内容や記述方法に...続きを読む

Q簡単にEXEファイルを作れるプログラミング言語/開発環境

「C:\xxx.exe C:\xxx.txt」のような単純な処理を実行するだけのEXEファイルを、なるべく簡単に作りたいのですが、お勧めの言語や開発環境はありますでしょうか。

高度な事は求めていないので、Visual Studioのように大掛かりでなく、容量が小さく、出力されるEXEファイルの容量も小さいものが望ましいです。

ご存知の方がおられましたら、お教え頂けると有難いです。

Aベストアンサー

windows 7以降(VISTAも?)ならC#が最初から入っているので、それを使用してみては如何でしょう?

>1. ウィンドウ無しで起動出来る事
>2. アイコンが設定出来る事

メモ帳等テキストエディタでソースを書いて、csc.exeにパスを通した環境でコマンドプロンプトから以下のとおりオプション付きで実行します。
C:\>csc.exe /target:winexe /win32icon:foo.ico source.cs

Windows10ならcsc.exeは以下の場所にあります。ほかのWindowsでも似た場所にあるはずです。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319




あとは比較的マイナー言語ですがGolangとか(https://golang.org/)

> 容量が小さく、出力されるEXEファイルの容量も小さいものが望ましいです。

は満たすと思います。
C言語ほどメモリ管理に気を使わなくてよいですし、他の要件も満たすと思います。
学習コストはかかりますが……

ご参考まで。

windows 7以降(VISTAも?)ならC#が最初から入っているので、それを使用してみては如何でしょう?

>1. ウィンドウ無しで起動出来る事
>2. アイコンが設定出来る事

メモ帳等テキストエディタでソースを書いて、csc.exeにパスを通した環境でコマンドプロンプトから以下のとおりオプション付きで実行します。
C:\>csc.exe /target:winexe /win32icon:foo.ico source.cs

Windows10ならcsc.exeは以下の場所にあります。ほかのWindowsでも似た場所にあるはずです。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
...続きを読む


人気Q&Aランキング