All pastes #26827 Raw Edit

Mine

public text v1 · immutable
#26827 ·published 2005-10-27 16:35 UTC
rendered paste body
Pristatymo data: 2004 11 02
Atliko: IF 4/11 gr. Studentas
Mantas Vaidotas

                                                                             Priėmė:      

1.	Laboratorinio darbo L3 ataskaita


1.1	UŽDUOTIS (L3B-328)


Duoti du masyvai. Su kiekvienu masyvu atlikite tokius veiksmus. Pirmųjų k elementų sumą įrašykite vietoje elementų didesnių už šią sumą. k įvedimui naudojamas Edit komponentas. Suskaičiuokite ir atspausdinkite kiek elementų pakeitėte. Atspausdinkite k reikšmes, pradinius ir galutinius masyvus.


1.2	PROGRAMOS APRAŠYMAS


Komponentas	Keičiama savybė	Reikšmė	Paskirtis
Form1	Caption	Masyvai	Pagrindinė programos forma
Button1	Caption	Vykdyti	Veiksmams vykdyti
Button2	Caption	Baigti	Baigti programos darbą
Label1	Caption	k=	Parodyti k kintamųjų skaičių
Label2	Caption	Masyvas 1	Paaiškinimams
Label3	Caption	Masyvas 2	Paaiškinimams
Label4	Caption	Prieš pakeitimus	Paaiškinimams
Label5	Caption	Po pakeitimų	Paaiškinimams
Label6	Caption		Parodyti elementų skaičių masyve A
Label7	Caption		Parodyti elementų skaičių masyve B
Label8	Caption	Masyvas 1	Paaiškinimams
Label9	Caption	Masyvas 2	Paaiškinimams
Memo1	Lines		Masyvo reikšmėms
Memo2	Lines		Masyvo reikšmėms
Memo3	Lines		Masyvo reikšmėms
Memo4	Lines		Masyvo reikšmėms












 






	Klasės tekstas
                                                                                 Unite.h

//--------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <fstream>
using namespace std;
#include <iomanip>
//--------------------------------------------------------------
const Cmk = 100;               // Maksimalus masyvo el. kiekis
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TButton *Button1;     // Vykdyti
        TEdit *Edit1;         // Kintam&#261;jam k &#303;vesti
        TLabel *Label1;       // "k ="
        TMemo *Memo1;         // Masyvo reik&#353;m&#279;ms
        TMemo *Memo2;         // Masyvo reik&#353;m&#279;ms
        TLabel *Label2;       // Masyvo pavadinimui
        TLabel *Label3;       // Masyvo pavadinimui
        TLabel *Label4;       // Pagalbine informacija
        TMemo *Memo3;         // Masyvo reik&#353;m&#279;ms
        TLabel *Label5;       // Pagalbine informacija
        TButton *Button2;     // Baigti
        TMemo *Memo4;         // Masyvo reik&#353;m&#279;ms
        TLabel *Label6;       // Masyvas 1 pakeistu el. skaicius
        TLabel *Label7;       // Masyvas 2 pakeistu el. skaicius
        TLabel *Label8;       // Masyvo pavadinimui
        TLabel *Label9;       // Masyvo pavadinimui
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
private:	// User declarations
        int A[Cmk];           // 1 masyvas
        int B[Cmk];           // 2 masyvas
        int nA;               // 1 masyvo el. kiekis
        int npA;              // Pakeistu el kiekis A masyve
        int nB;               // 2 masyvo el. kiekis
        int npB;              // Pakeistu el kiekis B masyve
        int k;                // k kintamasis
        void IvestiMasyva(const char Cfv[], int Mas[], int &kiek);                       // Skaito masyva i&#353; failo
        void Pakeisti(int Mas[],int kiek,int &np); 
// Pakei&#269;ia elementus didesnius u&#382; k element&#371; sum&#261;                                                                       
        void SpausdintiPradiniMasyva(const char Dfv[]);                          // Spausdina rezultatus prie&#353; pakeitim&#261;
        void SpausdintiPoPakeitimuMasyva(const char Dfv[]);    // Spausdina rezultatus po pakeitimo
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};
//--------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//--------------------------------------------------------------
#endif

&#61558;	Metod&#371; apra&#353;ai

void TForm1::IvestiMasyva(const char Cfv[],int Mas[], int &kiek)

	Kol ne failo pabaiga arba kol masyvo element&#371; skai&#269;ius ma&#382;esnis u&#382; konstant&#261; (Cmk = 100) skaitomi duomenys prie esamo kiekio prid&#279;jus vienet&#261;.

Prad&#382;ia void IvestiMasyva(const char Cfv[],int Mas[], int &kiek)
Atidaryti (fd);
Kintamasis kiek = 0
     Kol (ne fd pabaiga ir kiek < Cmk);   Skaityti (fd, Mas[kiek]); 
  Kiek = Kiek + 1;

U&#382;daryti fail&#261; fd;
Pabaiga


void TForm1::SpausdintiPradiniMasyva(const char Dfv[])

	&#302;vedami &#303; fail&#261; masyvas 1 ir masyvas 2  duomenys.

Prad&#382;ia void SpausdintiPradiniMasyva(const char Dfv[])
Atidaryti (fr);
Spausdinti ("----------------------------");
Spausdinti ("|      PRIES PAKEITIMUS    |");
Spausdinti ("----------------------------");
Spausdinti ("      MASYVAS 1      ");
     i = 0, nA -1
 &#302;vesti (fr, A[i]);

Spausdinti ("      MASYVAS 2      ");
     i = 0, nB -1
 &#302;vesti (fr, B[i]);

U&#382;daryti fail&#261; fr;
Pabaiga


void TForm1::SpausdintiPoPakeitimuMasyva(const char Dfv[])
	
	Senieji duomenys papildomi naujeisiais duomenimis.

Prad&#382;ia void SpausdintiPradiniMasyva(const char Dfv[])
Atidaryti (fr);
Spausdinti ("----------------------------");
Spausdinti ("|        Po PAKEITIMU      |");
Spausdinti ("----------------------------");
Spausdinti ("      MASYVAS 1      ");
     i = 0, nA -1
 Spausdinti (fr, A[i]);

Spausdinti ("      MASYVAS 2      ");
     i = 0, nB -1
 Spausdinti (fr, B[i]);

U&#382;daryti fail&#261; fr;
Pabaiga
void TForm1::Pakeisti(int Mas[],int kiek,int &np)

Vykdo pakeitimus masyvuose

Prad&#382;ia void Pakeisti(int Mas[],int kiek,int &np)
sum = 0, np = 0
T        k > kiek	F
nk = kiek;	nk = k;
  i  =  0, nk &#8211; 1;
 sum += Mas[i];

            nk > 0
      i = 0, kiek &#8211; 1;
  Mas[i] > sum;
  Mas[i] = sum;
  np + 1;

Pabaiga







2.1 PROGRAMOS TEKSTAS

//--------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//--------------Skaito masyvus i&#353; failo-------------------------
void TForm1::IvestiMasyva(const char Cfv[],int Mas[], int &kiek)
{ ifstream fd(Cfv);    // Atidaromas failas
  kiek = 0;            // Pradinis el. kiekis
  while (!fd.eof() && kiek < Cmk)  // Skaito, tol, kol nuskaito maksimal&#371; el. Kiek&#303;
   { fd >> Mas[kiek]; kiek++;   // Skaito elementus
   }
  fd.close();                   // U&#382;daro fail&#261;
}
//--------------Spausdina masyvus prie&#353; pakeitim&#261;---------------
void TForm1::SpausdintiPradiniMasyva(const char Dfv[])
{ ofstream fr;
  fr.open (Dfv);             // Atidaro fail&#261;
  fr << "----------------------------" << endl;
  fr << "|      PRIES PAKEITIMUS    |" << endl;
  fr << "----------------------------" << endl;
  fr << ""<< endl;
  fr << "      MASYVAS 1      " << endl;
  Memo1->Lines->Clear();         // I&#353;valo Memo1 langa
  for (int i = 0; i < nA; i++)   // Spausdina A masyvo elementus
    { fr << setw(5) << A[i];
      Memo1->Lines->Add(IntToStr(A[i]));
    }
  fr << endl;                    // Spausdina gaile nauja eilute
  fr << ""<< endl;
  fr << "      MASYVAS 2     " << endl;
  Memo2->Lines->Clear();                  // Isvalo Memo2 langa
  for (int i = 0; i < nB; i++)  // Spausdina B masyvo elementus
    { fr << setw(5) << B[i];
      Memo2->Lines->Add(IntToStr(B[i]));    }
  fr << endl;                    // Spausdina gaile nauja eilute
  fr.close();                    // U&#382;daro faila
}
//----------------Spausdina masyvus po pakeitimo----------------
void TForm1::SpausdintiPoPakeitimuMasyva(const char Dfv[])
{ ofstream fr;
  fr.open (Dfv,ios::app);     // Atidaro fail&#261; papildymui
  Memo3->Lines->Clear();      // I&#353;valo Memo3 langa
  fr << ""<< endl;
  fr << "----------------------------" << endl;
  fr << "|       PO PAKEITIMU       |" << endl;
  fr << "----------------------------" << endl;
  fr << ""<< endl;
  fr << "      MASYVAS 1      " << endl;
  for (int i = 0; i < nA; i++)      // Spausdina 1 masyvo elementus po pakeitimo
    { fr << setw(5) << A[i];
      Memo3->Lines->Add(IntToStr(A[i]));
    }
  fr << endl;
  Memo4->Lines->Clear();           // Isvalo Memo4 lang&#260;
  fr << ""<< endl;
  fr << "      MASYVAS 2      " << endl;
  for (int i = 0; i < nB; i++)
    { fr << setw(5) << B[i];
      Memo4->Lines->Add(IntToStr(B[i]));
    }
  fr << endl;                  // Spausdina gaile nauja eilute
  fr << ""<< endl;
  fr << "-----------------------------" << endl;
//--Spausdina pakeist&#371; element&#371; skaici&#371; abiejuose masyvuose-----
  Label6->Caption = "Masyvas 1 pakeista " + IntToStr(npA) + " elementu";
  Label7->Caption = "Masyvas 2 pakeista " + IntToStr(npB) + " elementu";
  fr << "Masyvas 1 Pakeista " << npA << " elementu" << endl;
  fr << "Masyvas 2 Pakeista " << npB << " elementu" << endl;
  fr << "k =" << k << endl;
  fr.close();                    // U&#382;daro fail&#261;
}
//----------------Vykdo pakeitimus masyvuose--------------------
void TForm1::Pakeisti(int Mas[],int kiek,int &np)
{ int sum = 0;  // Element&#371; sumos pradin&#279; reiksm&#279;
  int nk;       // Maksimalus k element&#371; kiekis
  np = 0;
  if ( k > kiek)  // Patikrina, ar k  nevirsyja element&#371; kiekio
    nk = kiek;
  else
    nk = k;
   for (int i = 0; i < nk; i++)      // Suranda k el. kiek&#303;
    sum += Mas[i];
  if (nk > 0)    // Jei susumuotas nors vienas elementas
   for (int i = 0; i < kiek; i++)    // Pakeicia el. didesnius uz sum&#261;
    if (Mas[i] > sum)
      { Mas[i] = sum;
        np++;
      }
}
//----------------------Vykdo visus veiksmus--------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ IvestiMasyva("Masyvas1.txt",A,nA);  // Skaito 1 masyva
  IvestiMasyva("Masyvas2.txt",B,nB);  // Skaito 2 masyva
  SpausdintiPradiniMasyva("Rez.txt"); // Spausdina pradinius duomenis
  k = StrToInt(Edit1->Text);  // I&#353;saugo k reiksme k kintamajame
  Pakeisti(A,nA,npA);         // Vykdo pakeitimus 1 masyve
  Pakeisti(B,nB,npB);         // Vykdo pakeitimus 2 masyve
  SpausdintiPoPakeitimuMasyva("Rez.txt");  // Spausdina rezultatus po pakeitim&#371;
}
//------------------------Baigia programa-----------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ Close();  // Uzdaro programa
}
//--------------------------------------------------------------


Duomen&#371; failai:

Masyvas 1

3
4
56
2
11
342
32
121
445
454
0	Masyvas 2

7
34
2
3
324
234
2
34
27
5
534


Rezultat&#371; failas
----------------------------
|      PRIES PAKEITIMUS    |
----------------------------

      MASYVAS 1      
    3    4   56    2   11  342   32  121  445  454    0

      MASYVAS 2     
    7   34    2    3  324  234    2   34   27    5  534    0

----------------------------
|       PO PAKEITIMU       |
----------------------------

      MASYVAS 1      
    3    4   56    2   11   63   32   63   63   63    0

      MASYVAS 2      
    7   34    2    3   43   43    2   34   27    5   43    0

-----------------------------
Masyvas 1 Pakeista 4 elementu
Masyvas 2 Pakeista 3 elementu
k =3