//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { dt=5; Image1->Canvas->MoveTo(0,281); //Image1の設定 Image1->Canvas->LineTo(0,0); Image1->Canvas->LineTo(500,0); Image1->Canvas->LineTo(500,281); Image1->Canvas->LineTo(0,281); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) //プログラムの開始 { Timer1->Enabled=true; Timer1->Interval=100; //timerの間隔0.1sec Label4->Caption="X=500"; //X軸に500の表示 } //--------------------------------------------------------------------------- void __fastcall TForm1::ComboBox1Change(TObject *Sender) //rangeの選択 { Timer1->Enabled=false; Image1->Canvas->MoveTo(0,281); i=0; y=StrToFloat(ComboBox1->Text); //Textを浮動小数点値に変換 Label3->Caption=y; } //--------------------------------------------------------------------------- void __fastcall TForm1::ComboBox2Change(TObject *Sender) { Timer1->Enabled=false; Image1->Canvas->MoveTo(0,281); i=0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) //Imageをclear { Timer1->Enabled=false; Image1->Canvas->MoveTo(0,281); i=0; Image1->Canvas->FillRect(Rect(1,1,500,281)); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) //プログラムの終了 { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) //プログラムの停止 { Timer1->Enabled=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) //計算、グラフ化 { if(i==100) { Timer1->Enabled=false; //プログラム終了 ShowMessage(AnsiString("終了")); } i++; if(Y<0) //レンジ変換ループ { y=10*y; Image1->Canvas->FillRect(Rect(1,1,500,281)); //Image clear Image1->Canvas->MoveTo(0,281); for(k=0;kCanvas->LineTo(X,Y); //変換値のグラフ化 } } if(y<=0.011 && y>=0.009) //Y軸の表示 { RadioButton1->Checked=true; Label3->Caption=0.01; } if(y<=0.11 && y>=0.09) { RadioButton2->Checked=true; Label3->Caption=0.1; } if(y<=1.1 && y>=0.9) { RadioButton3->Checked=true; Label3->Caption=1; } if(y<=11 && y>=9) { RadioButton4->Checked=true; Label3->Caption=10; } if(y<=110 && y>=90) { RadioButton5->Checked=true; Label3->Caption=100; } if(y<=1100 && y>=900) { RadioButton6->Checked=true; Label3->Caption=1000; } if(ComboBox2->Text=="X") //関数の選択及び計算 { X=dt*i; datax[i]=X; Y=281-datax[i]/y; Image1->Canvas->LineTo(X,Y); } else if (ComboBox2->Text=="sqrt(X)") //関数の選択及び計算 { X=dt*i; datax[i]=sqrt(X); Y=281-datax[i]/y; Image1->Canvas->LineTo(X,Y); } else if (ComboBox2->Text=="X^2") //関数の選択及び計算 { X=dt*i; datax[i]=X*X; Y=281-datax[i]/y; Image1->Canvas->LineTo(X,Y); } j=j+1; //総計算数のカウント XD[j]=X; //結果を配列に保存 YD[j]=datax[i]; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) //ファイルへの出力 { if (SaveDialog1->Execute()) { if((fp=fopen(SaveDialog1->FileName.c_str(),"w"))!=NULL); { for(j=0;j<=i;j++) { fprintf(fp, "%f\t%f\n",XD[j],YD[j]); //配列をファイルへ出力 } fclose( fp ); //file close } } } //---------------------------------------------------------------------------