rendered paste body//==============================================================================// 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 <vcl.h>#pragma hdrstop#include <fstream>using namespace std;#include <math.h>#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===============================