rendered paste body//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Bukauskas_Ind_2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AtmintisAtiduota(); //Vykdo metoda atmiciai atiduoti
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Memo1->Clear(); // Isvalomas Memo laukas
FILE *FR;
FR = fopen(CRez, "w"); // Sukuriamas tuscias tekstinis rezultatu failas
fclose(FR);
n = m = 0;
Skaityti();
Memo1->Lines->Add("Duomenys ivesti is failo: " + AnsiString(CDuom));
MatricaIfaila("Matrica A(n x m)");
RodytiA();
Memo1->Lines->Add("Pradine matrica isiminta faile: " + AnsiString(CRez));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Bmasy();
Bmasy1();
Label2->Visible = true;
ListBox1->Visible = true;
RodytiB();
Memo1->Lines->Add("B(n) masyvas sukurtas");
Button1->Enabled = false; // Mygtukas neveikia
Button2->Enabled = true; // Mygtukas veikia
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
SaugotiB("Masyvas B(n)", "a");
Memo1->Lines->Add("B(n) masyvas isimintas: " + AnsiString(CRez));
Button2->Enabled = false;
}
//---------------------------------------------------------------------------
bool TForm1::AtmintisSkirta()
{
try
{
A = new float *[n];
for (int i = 0; i <n; i++)
A[i] = new float[m];
return true; // Atmintis matricai buvo skirta
}
catch(...) // Apdoroja visas kritines situacijas
{
return false; // Atmintis matricai nebuvo skirta
}
}
void TForm1::AtmintisAtiduota() //Atiduoda atminti
{
for (int i = 0; i < n; i++)
delete [] A[i];
delete [] A;
}
void TForm1::Skaityti() //Nuskaito A(n x m) matrica is failo
{
int i, j;
FILE *FR;
if ((FR = fopen(CDuom,"r")) != NULL)
{
fscanf(FR, "%d%d\n", &n, &m);
if (AtmintisSkirta())
{
Memo1->Lines->Add("Atmintis matricai skirta.");
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
fscanf(FR, "%f", &A[i][j]);
fclose(FR);
}
else
{
ShowMessage("Nepakanka atminties!");
Close();
}
}
else
{
ShowMessage("Failas " + String(CDuom) + " nerastas");
Close();
}
}
void TForm1::RodytiA() //Parodo A(n x m) matrica StringGrid1, sunumeruoja
//eilutes ir stulpelius
{
int i, j;
StringGrid1->ColCount = m+1; // Stulpeliu kiekis
StringGrid1->RowCount = n+1; // Eiluciu kiekis
for (j = 0; j < m; j++) // Stulpeliu numeracija
StringGrid1->Cells[j+1][0] = "Stulp. " + IntToStr(j);
for (i = 0; i < n; i++) // Eiluciu numeracija
StringGrid1->Cells[0][i+1] = "Eil. " + IntToStr(i);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
StringGrid1->Cells[j+1][i+1] =
FloatToStrF(A[i][j], ffFixed, 6, 2);
}
void TForm1::MatricaIfaila(char *pav)
{
int i, j;
FILE *FR;
FR = fopen(CRez, "a");
fprintf(FR, " %s\n", pav);
fprintf(FR, " ");
for (j = 0; j < m; j++)
fprintf(FR, "%8d",j);
fprintf(FR, "\n");
fprintf(FR, " -");
for (j = 0; j < m; j++)
fprintf(FR, "-------");
fprintf(FR, "--\n");
for (i = 0; i < n; i++)
{
fprintf(FR, "%4d |", i);
for (j = 0; j < m; j++)
fprintf(FR, "%7.2f", A[i][j]);
fprintf(FR, " |\n");
}
fprintf(FR, " -");
for (j = 0; j < m; j++)
{fprintf(FR, "-------");}
fprintf(FR, "\n");
fclose(FR);
}
void TForm1::RodytiB()
{
ListBox1->Items->Clear();
for (int i=0; i<n; i++)
ListBox1->Items->Add(FloatToStr(*(B+i)));
}
void TForm1::SaugotiB(char * masv, char * a)
{
FILE *FR;
FR=fopen(CRez, a);
fprintf(FR, " ");
fprintf(FR, "%s\n", masv);
for (int i=0; i<n; i++)
fprintf(FR, " %6d\n", B[i]);
fclose(FR);
}
int TForm1::EilutesPirmasNeigiamas(int i)
//Suranda kiekvienos matricos eilutes neigiama skaiciu, jei jo nera, grazina 0
{
for (int j=0; j<m; j++)
if(A[i][j]<0) return j;
return 0;
}
void TForm1::Bmasy()//Suformuoja masyva
{
int neig;
for (int i=0; i < n; i++)
{
neig=EilutesPirmasNeigiamas(i);
B[i]=A[i][neig];
}
}
void TForm1::Bmasy1() //Teigiamas reiksmes masyve pakeicia 0
{
for (int i=0; i < n; i++)
if(*(B+i)>=0)
*(B+i)=0;
}