ここから本文です

C++について、 現在、Borland C++ Builder6で、値を入力したら計算をして、結果...

kan********さん

2017/11/2519:06:03

C++について、

現在、Borland C++ Builder6で、値を入力したら計算をして、結果を出すコードを組みました。以下にコードをのせます。

このコードだと、長すぎるため、
XYZの値がでたところで関数を一度区切りたいと考え

ています。


しかし、初心者のため、どのようにすればよいのかわかりません。
どなたか教えていただけないでしょうか。。。


void TForm1::keisan(void)
{
double X,Y,Z;


float lumi=StrToFloat(Edit7->Text);
float us=StrToFloat(Edit8->Text);
float vs=StrToFloat(Edit9->Text); //値を入力
MSG msg; //入力したu,v座標

Y=lumi;
X=(9*Y*us)/(4*vs);
Z=Y*((12-(3*us)-(20*vs))/(4*vs));
//--------------------------------------------------------←←ここで関数を区切りたい

double xr,yr,xg,yg,xb,yb;


xr=0.630682661;
yr=0.33903134;

xg=0.284105296;
yg=0.609395068;

xb=0.14814505;
yb=0.06456748;


//行列式を解く計算

double a,b,c,g,h,i;

a=xr/yr;
b=xg/yg;
c=xb/yb;
g=(1-xr-yr)/yr;
h=(1-xg-yg)/yg;
i=(1-yb-yb)/yb;


double k;

k=1/((a*i)+(b*g)+(c*h)-(a*h)-(b*i)-(c*g));


double Yr,Yg,Yb;


Yr=k*((i-h)*X+(c*h-b*i)*Y+(b-c)*Z);
Memo1->Lines->Add(FloatToStr(Yr));
Yg=k*((g-i)*X+(a*i-c*g)*Y+(c-a)*Z);
Yb=k*((h-g)*X+(b*g-a*h)*Y+(a-b)*Z);
//先ほど求めたXYZの値をこの式に代入したい


よろしくお願いします。

閲覧数:
13
回答数:
1

違反報告

ベストアンサーに選ばれた回答

the********さん

2017/11/2520:22:10

取りあえず思いつくことは,そのままだと変数を他の関数で使い回せなくなるので,そこで定義するのではなくヘッダーのパブリックかプライベートのどちらかに定義すれば良いです.

パブリックは他フォームに渡って使い回せが可能に,プライベートはそのフォーム内で使い回せます.
フォーム一つで作るならどっちでも良いです.

パッと見た感じではX,Y,Zはその対象になりますね.

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる