//============================================================================== // Autorius: Vaidas Matkus, IF - 5 / 4 grupe. 2005.10.27 //------------------------------------------------------------------------------ // koordinaciu plokstumoje yra daug trikampiu, // kuriu virsuniu tasku koordinates (x,y) zinomos. // Surasti didziausio ploto statu trikampi // ir jo virsuniu atstumus iki koordinaciu pradzios tasko. // padaryti ir naudoti funkcija, kuri skaiciuoja atstuma tarp dvieju duotu tasku. // spausdinti duomenis ir skaiciavimo rezultatus //------------------------------------------------------------------------------ //============================================================================== #include #pragma hdrstop #include using namespace std; #include #include "Unit1.h" //------------------------------------------------------------------------------ #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //-- Paleidziamas programos langas TForm1--------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Valyti(); } //-- Pirmojo mygtuko paspaudimas------------------------------------------------ void __fastcall TForm1::Button1Click(TObject *Sender) { Ivesti(Duom, X, Y, a); Button2->Enabled = true; } //-- Antrojo mygtuko paspaudimas ----------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Skaiciuoti(T, l); Didziausias(T, a, b, c); Button3->Enabled = true; } //---- Treciojo mygtuko paspaudimas -------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { SpausdintiDuom(X, Y, a); } //-------- Ketvirto mygtuko paspaudimas----------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Valyti(); } //---- Penkto mygtuko paspaudimas----------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- //======================METODAI================================================ //----------------------- Ivedimo Metodas -------------------------------------- void TForm1::Ivesti(const char fv[], int A[], int B[], int &n) { n = 0; //indeksui suteikiama pradine reiksme ifstream fd(fv); //atidaromas failas duomenu ivedimui while ( !fd.eof() && n < mas ) { //vykdomas ciklas kol nesibaige failas fd>>A[n]>>B[n]; //vedamos reiksmes i masyvus if (!fd.fail()) n++; //jei ivesta, indeksas padidinamas } fd.close(); //uzdaromas ivedimo failas } //-- Atstumo tarp dvieju tiesiu skaiciavimo metodas ---------------------------- int TForm1::Tiese(int G[], int H[], int u, int v, double &z) { z = pow(G[u] - G[v], 2) + pow(H[u] - H[v],2); return z; } //-- Staciu trikampiu ploto skaiciavimo metodas -------------------------------- void TForm1::Skaiciuoti(double D[], int &l) { double t1 = 0; double t2 = 0; double t3 = 0; l = 0; for (int i = 0; i < a; i++) //imamas pirmasis taskas for (int j = 0; j < a; j++) //imamas antrasis taskas if ( j != i ) //tikrinama ar indeksai nelygus for (int k = 0; k < a; k++) if (( k != j) && ( k != i)) //tikrinama ar indeksai nelygus { abs(t1 = Tiese(X, Y, j, i, t1)); //skaiciuojama pirma tiese abs(t2 = Tiese(X, Y, k, j, t2)); //skaiciuoajma antra tiese abs(t3 = Tiese(X, Y, i, k, t3)); //skaiciuojama trecia tiese if ((t1 + t2 == t3) && (t3 != 0)) { D[l] = ( sqrt(t1) * sqrt(t2) ) / 2; T1[l] = sqrt(Tiese(X, Y, i, 0, b)); T2[l] = sqrt(Tiese( X, Y, j, 0, b)); T3[l] = sqrt(Tiese(X, Y, k, 0, b)); l++; } if ( (t2 + t3 == t1) && ( t3 != 0) ) { D[l] = ( sqrt(t2) * sqrt(t3) ) / 2; T1[l] = sqrt(Tiese(X, Y, i, 0, b)); T2[l] = sqrt(Tiese( X, Y, j, 0, b)); T3[l] = sqrt(Tiese(X, Y, k, 0, b)); l++; } if ( (t1 + t3 == t2) && ( t3 != 0) ) { D[l] == ( sqrt(t1) * sqrt (t3) ) /2; T1[l] = sqrt(Tiese(X, Y, i, 0, b)); T2[l] = sqrt(Tiese( X, Y, j, 0, b)); T3[l] = sqrt(Tiese(X, Y, k, 0, b)); l++; } } } //------------------- Didziausios reiksmes ieskojimo metodas ------------------- void TForm1::Didziausias(double F[], int &c, int &d, int &e) { double hj = F[0]; for (int i = 0; i < l; i++) if ( F[i] > hj ) { hj = F[i]; c = i; d = i; e = i; } } //---------------------- Lauku isvalymo metodas -------------------------------- void TForm1::Valyti() { Label1->Caption = ""; Label2->Caption = ""; Label3->Caption = ""; Label4->Caption = ""; ListBox1->Items->Clear(); ListBox2->Items->Clear(); Button2->Enabled = false; Button3->Enabled = false; } //------------------------ Spausdinimo metodas --------------------------------- void SpausdintiDuom(int A[],int B[],int a) { ListBox1->Items->Clear(); ListBox2->Items->Clear(); for (int i = 0; i < a; i++) { ListBox1->Items->Add(IntToStr(A[i])); // ListBox2->Items->Add(IntToStr(B[i])); } Label1->Caption = hj; Label2->Caption = T1[a]; Label3->Caption = T2[b]; Label4->Caption = T3[c]; } //========================================PABAIGA===============================