プログラミングの問題集に下記のような問題が書かれているのですが、
解答用紙が付いておらず解りません。
点の位置を与えられたとき、原点からの距離rとX軸とのなす角thを計算し、属性値として設定する関数を作成せよ。引数は1つのオブジェクトとし、天の座標も属性値として渡されるとする。
点p1の原点からの距離は1.4,角度は45度であるが実行結果は
1.41421356 0.785398となる。
角度はラジアンを単位として計算、ラジアンは半径1の円の角度に対応する弧の長さである。
180度はπラジアン、90度はπ/2ラジアンである。
問題は2つあり、(お聞きしたいのは二つ目です)
一つ目は角の単位を弧度法から度数法へ変換できるよう修正せよ。p1.thは45度となり、
p2, p3, p4に距離や角度の異なる座標を指定し、演算結果の数値が正しいことを確認できる座標で
確認せよ。という問いがあったので下記のようにしました。
function henkan(p)
{
var w;
p.r = Math.sprt(p.x * p.x + p.y * p.y);
w = Math.acos(p.x / p.r);
p.th = w*180/Math.PI;
}
var p1, p2, p3, p4;
p1 = {x:1, y:1};
p1 = {x:1, y:1.74};
p1 = {x:5.2, y:3};
p1 = {x:0, y:1};
henkan(p1);
henkan(p2);
henkan(p3);
henkan(p4);
print(p1.r, p1.th);
print(p2.r, p2.th);
print(p3.r, p3.th);
print(p4.r, p4.th);
長くなりましたがお聞きしたいのはここからで、次の問いに
「先ほどの問いを行うとある範囲の座標では動作するが別の範囲では誤った角度が表示される。
この理由を考察し、原点を除くすべての点で正しく動作するよう修正せよ。」
と書かれていたのですが、どこを修正すればいいのか解りません。
即急に解決したいのでお力をお貸しください。
No.5ベストアンサー
- 回答日時:
No.2です。
質問者様は、実際にプログラムを動かして結果を確認していませんよね?
この問題は実際に動かして結果をみないとわかりにくいですよ。
打ち間違いの修正、不足の関数の追加、その他をしています。
---test.html----------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>テスト</title>
<script type="text/javascript">
function print(){
var s = "";
var i;
for(i = 0; i < arguments.length; i++){
s += arguments[i];
}
s += "<BR>"
document.write(s);
}
function henkan(p){
var w;
p.r = Math.sqrt(p.x * p.x + p.y * p.y);
w = Math.acos(p.x / p.r);
p.th = w*180/Math.PI;
}
var p1, p2, p3, p4;
p1 = {x:1, y:1};
p2 = {x:-1, y:1};
p3 = {x:-1, y:-1};
p4 = {x:1, y:-1};
henkan(p1);
henkan(p2);
henkan(p3);
henkan(p4);
print("P1: r=", p1.r, " th=", p1.th);
print("P2: r=", p2.r, " th=", p2.th);
print("P3: r=", p3.r, " th=", p3.th);
print("P4: r=", p4.r, " th=", p4.th);
</script>
</head>
<body>
</body>
</html>
質問文に誤りがあって困惑されたと思います。
それでも丁寧に教えていただきありがとうございました。ご指摘していただいた通り、自分でもプログラムを動かして確かめるべきだと思いました。朝早くからお答えしていただき本当に助かりました。
No.4
- 回答日時:
これ, 言語は何だろう. どう見ても C とか C++ とかには見えないんだが.
あと, 問題に違和感がある. 1つ目の問題が「角の単位を弧度法から度数法へ変換できるよう修正せよ」となっているということは, 「修正する『前』」のプログラムがあるってことだよね? その一方で, 2つ目の問題では「『先ほどの問いを行う』とある範囲の座標では動作するが別の範囲では誤った角度が表示される」って書いてある. ここの「先ほどの問いを行う」は 1つ目の「角の単位を弧度法から度数法へ変換できるよう修正せよ」だと思うんだけど, 理論上その修正をするだけで「別の範囲では誤った角度が表示される」ようにはなりえない (もちろんそれ以外に手を加えていれば別の話だ). つまり, ここで問題としている「別の範囲では誤った角度が表示される」という現象は「角の単位を弧度法から度数法へ変換できるよう修正」したからではなく, 「もともとのプログラムが本質的に内包していた」ものじゃないかな.
質問文に書く内容が下手だったばかりに困惑されたと思います。それでも無視せず的確にご指摘してくださったおかげで何を書くべきだったか反省することが出来ました。このような質問にお手間をとらせ長文でご指摘いただきありがとうございました。無事解決しました。
No.3
- 回答日時:
プログラムではなく数学の問題です。
○ x=0,y=0のとき、rがどうなるか、 x/rがどうなるか、考えてみましょう。
○ 三角関数のグラフをよく思い出してみましょう。
acos は y=cos x のときの、yの値から x を求めるものです。
グラフ上では、 yの値の線を横にひいて、cosカーブとの交点のx座標がacosの値です。
では、 y=0.5の横線をひいたら、xはどうなりますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 ベクトル方程式(ヘッセの標準形)についての質問 2 2022/04/23 18:00
- 数学 線形代数の2次元直交座標系、極座標系についての問題がわからないです。 2 2022/07/16 20:42
- 中学校 中1数学 比例のグラフの座標の読み取り 4 2023/03/28 12:26
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- 物理学 角速度ベクトルにつきまして 3 2022/08/09 15:44
- 物理学 高1力学の運動量の問題です。問題を一通り解いたのですが、行き詰まってしまったのでご回答頂ければ嬉しい 3 2022/06/29 11:20
- 数学 問題「キッチンペーパーだけでバウムクーヘンを五等分せよ」 正解は? 5 2022/12/16 22:18
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- 数学 AB=2dとなる理由を教えてください 4 2023/08/28 22:38
- 物理学 物理 2 2023/01/17 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
エクセルである点からの距離で...
-
エクセルシート上のマウスポイ...
-
ダイアログ内コントロールの位...
-
以下のプログラムは重心を求め...
-
visualbasic でform上に正三角...
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
碁盤目の経路数
-
6点からの楕円の近似計算(最...
-
空間上の二点を結ぶ直線上に任...
-
c言語でキーボードから2点の座...
-
始点、終点の二つの座標と半径...
-
(C言語)スキャンライン法によ...
-
座標を持った平面範囲に座標を...
-
VB6のPrinter.ScaleWidth に対...
-
円弧の描画について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マインクラフト(pc版)で座標...
-
グラフの交点の求め方(Excel)
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
求積表の計算方法
-
ダイアログ内コントロールの位...
-
空間上の二点を結ぶ直線上に任...
-
始点、終点の二つの座標と半径...
-
図形が重なりあっているかどうか
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
シーケンサー(PLC?)で制...
-
ピクチャボックスの座標取得
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
選択範囲の座標値の抽出
-
座標を持った平面範囲に座標を...
-
VBで、開いているExcelシートの...
おすすめ情報
迅速なアドバイスありがとうございます。
修正箇所が数字なのは理解しました。
しかし、数学には疎いため、解答することが出来ません。出来れば
X=○、Y=○;
とお答えしてもらいたいのです。
教わる立場がこのような要求をするのは失礼だと思いますが よろしくお願いします。
言語は何だろう?と書かれていたので確認ところ、JavaScript言語と書かれていました。
一つ目の問題に「修正せよ」と書かれていますが、修正前のプログラムはありませんでした。