• 締切済み

プログラム ファイル処理について

プログラムの問題が解けなくて困っています。 visual C++ 2010 Express を使用しています。 (1)X,Yの範囲がそれぞれ-200から200の範囲で空間内に立体が書かれる ようにエクセルファイルにデータを入れたいのですが、その処理がうまくいきません。 (2)degreeの意味がわかりません。degree*PI(円周率)/180でradianなのですか? よろしくお願いします。 今、2次元平面上の座標値(x,y)に対し、(x2+y2)0.5を角度(degree) とした場合に、 下記の式によって定義されるポテンシャル値zの分布を考える z=30×(cos(√(x2+y2))+cos((3×√(x2+y2))) xとyの範囲を(-200<X<200)、(-200<Y<200)と設定してXとYの値を10ごとに増加させた場合のZの値を 以下のようなfor文を用いて計算し、 for(y=200.0;y>=-200.0;y=y-10.0){  for(x=-200.0;x<=200.0;x=x+10.0){  } } 同一のY座標値におけるZの値がカンマで区切られて並ぶテキストファイルを出力するプログラムを作成しなさい。 そのファイルをエクセルで開き(カンマ区切りで) 3次元グラフを表示させる. ヒント1: #include <math.h> を宣言することにより、数学関数 cos sin pow が使用可能となる。 ヒント2: sin cos の引数はラジアン単位で指定する必要があるため、円周率を用いて degree から radian を求めること

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

(1) どう「うまくいかない」のでしょうか? つまずきやすい点の一つである forの二重ループ構造が出ているのですから、そこに埋め込むだけです。 そのなかで、「yが同じ」ならどうすればいいのか、yが変わるときにどうすればいいのか考えてみましょう。 (2) degreeは日本語にすれば「度」です。

関連するQ&A

  • プログラムの練習問題

    プログラムの練習問題が解けなくて困っています。 visual C++ 2010 Express を使用しています。よろしくお願いします。 今、2次元平面上の座標値(x,y)に対し、(x2+y2)0.5を角度(degree) とした場合に、 下記の式によって定義されるポテンシャル値zの分布を考える z=30×(cos((x2+y2)0.5)+cos((3×(x2+y2)0.5)) xとyの範囲を(-200<X<200)、(-200<Y<200)と設定してXとYの値を10ごとに増加させた場合のZの値を 以下のようなfor文を用いて計算し、 for(y=200.0;y>=-200.0;y=y-10.0){ for(x=-200.0;x<=200.0;x=x+10.0){ } } 同一のY座標値におけるZの値がカンマで区切られて並ぶテキストファイルを出力するプログラムを作成しなさい。 そのファイルをエクセルで開き(カンマ区切りで) 3次元グラフを表示させる. ヒント1: #include <math.h> を宣言することにより、数学関数 cos sin pow が使用可能となる。 ヒント2: sin cos の引数はラジアン単位で指定する必要があるため、円周率を用いて degree から radian を求めること。

  • 並列処理プログラム

    並列処理について。 画像imageの値が0より大きい場合に、managerを実行しますが、managerの計算時間が長いです。 そこで、4つのコアでpthreadにより、並列処理をさせたいんですが、 どのようにプログラムを書けばいいかすみませんが教えてください。 あるボクセルを計算中に、次のボクセルを計算するようなプログラム。。。 for (int z=0; z<32; z++){  for (int y=0; y<32; y++){   for (int x=0; x<32; x++){    if(image(x,y,z) > 0){     total += manager(x,y,z);    }   }  } }

  • 座標変換について

    座標系XYZの空間に点A(X1,Y1,Z1)、点B(X2,Y2,Z2)、点C(X3,Y3,Z3)があります。 この3点を通る円の中心をP(X0,Y0,Z0)とし、 円の存在する平面をx'y'平面とします。 さらに原点を点P、x'軸はPAを通る直線とします。 座標系x'y'z'から円周上の点D(X',Y',Z')を求め 座標系XYZに変換した(X4,Y4,Z4)を求めたいのですが、どうすればよいのでしょうか? 以下のようにすれば求まると思うのですが角度α、β、γの求め方が分かりません。 X'' = X' * cosα - Y' * sinα Y'' = X' * sinα + Y' * cosα Z'' = Z' X''' = X'' Y''' = Y'' * cosβ - Z'' * sinβ Z''' = Y'' * sinβ + Z'' * cosβ X4 = X''' * cosγ + Z''' * sinγ Y4 = Y''' Z4 = Z''' * cosγ - X''' * sinγ よろしくお願いします。

  • 三重積分の問題です。

    空間の極座標変換を用いて、次の積分の値を計算しなさい。 ∬∫(x^2+y^2+z^2)dxdydz、範囲がx^2+y^2+z^2≦a^2 です。 極座標変換で(r、θ、φ)={0≦r≦a                 0≦θ≦2π                 0≦φ≦2π}と範囲をおき、 x=r sinθ cosφ y=r sinθ sinφ z=r cosθ と変換しました。 ここから積分の仕方が少しわかりませんでした。 一生懸命考えてみたのですが、積分で詰まりました。 もしわかる人がいましたら教えてください

  • visual basic6.0でのテキストファイルからの読み込みについて。

    vb初心者です。 数値をテキストファイルに保存しています。その数値は、x方向に10個、y方向に3個、つまり10列3行の数値を保存しています。 そのデータを2次元配列 D(x,y)として読み込みたいのです。 for x=0 to 9, for y=0 to 2 と範囲を指定して、数値全部を読み込むときは、D(x,y)の値は正しく入っているのですが、 ある範囲だけを読み込みたいとき、たとえば for x=0 to 5, for y=0 to 1 としたとき、D(x,y)は別の数値が読み込まれてしまいます。 これは、テキストファイルの数値が配列になっていないということですよね?? どうすれば、テキストファイルの数値を2次元配列として読み込むことができるのでしょうか? 文章が解りにくくてごめんなさい!!よろしくお願いします! 

  • 3次元座標XYZを視覚化したい。

    3次元座標(X,Y,Z)の値がいくつかあるのですが、 それを3Dでグラフ化するようなソフトはないでしょうか?

  • 偏微分について

    偏微分をこの前習ったのですが、いまいちよく分かりません><どなたか手助けお願いいたします。 位置ベクトルrの独立変数はデカルト座標(x,y,z)で、 Δr/Δx=lim {r(x+Δx,y,z)-r(x,y,z)}/ Δx と、これでよいのでしょうか??(極限はΔx→0です) またデカルト座標(x,y,z)、極座標(r,θ,Φ)について、デカルト座標を極座標の関数とし、または極座標をデカルト座標の関数として偏微分を行うときに、 Δx/Δθ=rcosθ×cosΦ Δy/ΔΦ=rsinθ×cosΦ Δz/Δr=cosθ でよいのでしょうか?? あと、これの逆の Δr/Δy,Δθ/Δz,ΔΦ/Δx のやり方が分かりません。 どなたかよろしくお願いいたします。

  • 回転移動した平面の方程式

    右手系座標での平面 z = 0 を 方位角 φ ( y 軸正方向から見て時計回りを正とする)、 仰角 θ ( x 軸正方向から見て反時計回りを正とする)で 回転させたときの方程式はどのようになりますか。 2つの方法で方程式が一致しないので、 混乱しています。 方位角 φ の座標変換 x' = x cos φ - z sin φ z' = x sin φ + z cos φ 仰角 θ の座標変換 y' = y cos θ + z sin θ z' = - y sin θ + z cos θ 方位角 φ, 仰角 θ の座標変換 (←この辺りから間違っている?) x' = x cos φ - z sin φ y' = x sin φ sin θ + y cos θ + z cos φ sin θ z' = x sin φ cos θ - y sin θ + z cos φ cos θ 方法1 回転後の平面は z' = 0 であるから、平面の方程式は x sin φ cos θ - y sin θ + z cos φ cos θ = 0 方法2 平面 z = 0 の単位法線ベクトル n は (0, 0, 1) である。 座標変換の式にこれを代入すると、回転後の n は ( - sin φ, cos φ sin θ, cos φ cos θ ) であるから、n に垂直で原点を通る平面の方程式は - x sin φ + y cos φ sin θ + z cos φ cos θ = 0 回転放物面 z = ( x^2 + y^2 ) / ( 4 f )についても 方程式を得たいので、よろしくお願い致します。

  • 三角比で

    「0°≦θ≦180°とする。sinθ=2/3のとき、cosθ、tanθの値を求めなさい。」という問題があって 解答では  θの範囲が0°≦θ≦90°の時cosθ≧0だから・・・・と90°<θ≦180°の時cosθ<0だから・・・・とあったのですが、sinはy座標なので、しかも2/3だと題意では言ってるから、θの範囲が0°も含むとsinの値(y座標)は0になっていしまいますし、180°も含むとこれまたsinの値(y座標)は0になってしまうし、90°も含むとsinは1になってしまうから 0°<θ<90°と90°<θ<180°ではないのでしょうか?

  • sinの値を求めるプログラムでお聞きします。

    cos(x)の値をcosのテーラー展開の式から求めるプログラムを作り、無限級数の項の絶対値が0.00001以下になったら打ち切って、コンピュータで定義されるcos(x)の値との差を 0.0≦x≦0.1 の範囲で0.01刻みに求めよ。ただし、結果はファイルに書き出すこと。 という問いがあり、プログラムは下記のようなものだったのですが、 #include <stdio.h> #include <math.h> double COS(double x); int main(void) { double a; FILE *fout; fout=fopen("file1.txt","w"); for(a=0;a<0.1;a=a+0.01) { fprintf(fout,"a=%f COS=%e cos=%e error=%e\n",a,COS(a),cos(a),COS(a)-cos(a)); } return 0; } double COS(double x) { double t; double y; int n; y=1.0; t=1.0; n=1; while(1) { t=-t*x*x/((2*n)*(2*n-1)); if(fabs(t)<=0.00001) break; y=y+t; n++; } return y; } これが、例えば、cos(x)ではなくsin(x)についてだった場合、上記の最初に書いてある条件もまったく同じでプログラムを作ったとすると、上記のプログラムのどこどのように変えればいいのでしょうか。 分からなくて困っています。助けてください。