プロが教えるわが家の防犯対策術!

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の値をこの式に代入したい


よろしくお願いします。

A 回答 (1件)

統合開発環境を利用しているならば、


リファクタリング機能にて、区切りたい部分のコードを「メソッド抽出」しましょう。
おそらく以下のように分割できるはずです。

void TForm1::keisan(void)
{
...
Y=...
X=...
Z=...
calcMatrix(X,Y,Z);
}

void TForm1::calcMatrix(X,Y,Z)
{
...
// 先ほど求めたXYZの値をこの式に代入したい
}
    • good
    • 0

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