All pastes #27867 Raw Edit

Unnamed

public text v1 · immutable
#27867 ·published 2005-11-07 12:18 UTC
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;
}