Зертханалы жмыс.

Массивтермен жмыс жасауа арналан компоненттер


дістемелік нсаулар


Мліметтерді кестелер трінде беруді йымдастыру. C++ Builder ортасында осымша руда мліметтерді кестелер трінде беру шін Additional жапсырмасындаы StringGrid жне DrawGrid компоненттері /4.12-сурет/ олданылады.



Additional панеліні StringGrid жне DrawGrid компоненттері. DrawGrid, StringGrid компоненттерін формаа орналастыранда, жай ана, бос яшытары бар кестелер немесе торкздер пайда болады, ал программманы орындалуы барысында яшытарды мліметтермен толтырылуын программист зі ескеруі тиіс.

Кесте лшемін (баан жне жол санын) Longint типті ColCount жне RowCount асиеттері анытайды. алыпты кйде оларды мндері 5-ке те. Баан мен жолды нмірлері нлден бастадады, яни кесте лшемі 6х6.

void __fastcallTForm1::Button1Click(TObject *Sender)

{

intI, J, K;

K = 0;

for (I = 0; I < StringGrid1->ColCount; I++)

for (J = 0; J < StringGrid1->RowCount; J++)

StringGrid1->Cells[I][J] = IntToStr(++K);

}

Кестедегі баандарды енін згерту шін типі іnt болатын DefaultColWidth асиеті, ал кесте жолыны биіктігін згерту шін DefaultRowHeight асиеттері олданылады. Мысалы, программада терезені лшемдері згергенде кесте яшытарыны /баан мен жолды/ лшемдерін згерту келесі трде жазылады:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

if(DrawGrid1->DefaultColWidth > 90)

DrawGrid1->GridLineWidth = 2;

Else

DrawGrid1->GridLineWidth = 1;

}


GridLineWidth асиетін кесте яшыын кмкеріп тран сызытарыны алыдыын немесе жіішкелігін беру шін олданады. детте оны мні 1-ге те болып трады, егер оны 3-ке згертсеіз онда кесте яшытары алы бояулы сызыпен кмкерілетін болады.


Жаттыу жмыстары


А(5,5) матрицаны баандары мен жолдарын алмастыранда шыатын матрицаны крсетііз. Программа терезесі 4.12-суретте крсетілген.


4.12-сурет. Программа терезесі.


Программа терезесіндегі компоненттерді асиеттерін згерту:

Компонент Компонентті асиеттері Мндері
Form1 Caption 'StringGrid мысалы'
Label1 Caption 'Бастапкы кесте'
Label2 Caption 'Сонгы кесте'
StringGrid1 StringGrid2 Немесе StringGrid1-ді кшіріп алып айтадан оюа да болады ColCount 5 (баандарыны саны)
RowCount 5 (жолды саны)
FixedCols 0 (бекітілген немесе озалмайтын баан саны)
FixedRows 0 (бекітілген немесе озалмайтын жолдар саны)
DefaultRowHeight 20 (жолды биіктігі)
DefaultColWidth 50 (баанны ені)
Height 113 ( кесте сыртындаы тіктртбрышты облысты биіктігі)
Width 265 ( кесте сыртындаы тіктртбрышты облысты ені)
Options->goEditing True (яшыа млімет енгізуге болады)
Options-> AlwaysShowEditing True (енгізу фокусы орналасан яшыты редакциялуа болады)
Options->goTabs True (Tab пернесін басып ауысуа болады (Shift+Тab))
PopupMenu PopupMenu1
MainMenu1 N1: Caption = 'ТЕРЕЗЕ' N3: Caption = 'Жабу' OnClick = N3Click N2: Caption = 'КЕСТЕ' N4: Caption = 'Толтыру' OnClick = N4Click N5: Caption = 'Тазалау' OnClick = N5Click
PopupMenu1 N6: Caption = 'толтыру' OnClick = N6Click N7: Caption = 'тазалау' OnClick = N7Click
Button1 Caption = 'Алмастыруды орындау' OnClick = Button1Click

Программа мтіні:

#include

#pragma hdrstop

#include "Unit1.h"

#include "stdlib.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcallTForm1::N3Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void __fastcallTForm1::N4Click(TObject *Sender)

{

for(int i=0;i<5;i++)

for(int j=0;j<5;j++)

StringGrid1->Cells[i][j]=IntToStr(i+j-2);

}

//---------------------------------------------------------------------------

void __fastcallTForm1::N5Click(TObject *Sender)

{

for(int i=0;i<5;i++)

StringGrid1->Rows[i]->Clear();

}

//---------------------------------------------------------------------------

void __fastcallTForm1::N6Click(TObject *Sender)

{

for(int i=0;i<5;i++)

for(int j=0;j<5;j++)

StringGrid1->Cells[i][j]=IntToStr(rand()%100-27);

}

//---------------------------------------------------------------------------

void __fastcallTForm1::N7Click(TObject *Sender)

{

for(int i=0;i<5;i++)

StringGrid1->Cols[i]->Clear();

}

//---------------------------------------------------------------------------

void __fastcallTForm1::Button1Click(TObject *Sender)

{

for(int i=0;i<5;i++)

for(int j=0;j<5;j++)

StringGrid2->Cells[j][i]=StringGrid1->Cells[i][j];

}

//---------------------------------------------------------------------------


зіндік жмыс тапсымалары


Тапсырманы орындауа нсау!


  • Тапсырманы орындау барысында рылатын осымшада массив элементтерін енгізу екі трлі жолмен жасалуы керек :

  • «ЕНГІЗУ» командасы арылы олданушы зі енгізеді;

  • «ТОЛТЫРУ» командасы арылы автоматты трде толтырылады;

  • Массив элементтерімен жасалатын операциялар мзір командаларыны кмегімен орындалуы ажет;

  • Массив трлендірілген жадайда бастапы массив пен алынан жаа массив екі трлі кестеде крсетілуі ажет;

  • осымша руда осыан дейін арастырылан мтінмен жмыс жасау компоненттері, тізімдер, ауыстырыштар, мзірлер, командалы батырмалар, диалогты терезелер жне оларды асиеттері мен дістері пайдаланылуы ажет.

 

1-тапсырма

#№ Матрица Тапсырмалар Шектеу
  1. 1
A(5,7) Матрицаны рбір бааныны о элементтеріні осындысын жне оларды санын есте сатау. Нтижесін екі жол трінде шыару. Aij>0
  1. 2
A(N,M) Матрицаны рбір жолыны о элементтеріні осындысын жне олардын санын есептеп есте сатау.Нтижесін екі баан трінде баспадан шыару. N<=4 M<=5
  1. 3
B(N,N) Матрицанын бас диагоналындаы жне одан тмен орналасан элементтерді осындысын жне элементтер санын есептеу. N<=6
  1. 4
B(N,N) Матрицаны бас диагоналынан тмен орналасан о элементтерінін осындысын жне оларды элементтер санын есептеу. N<=4 Bij>0
  1. 5
D(K,K) Матрицаны жп орындаы элементтеріні элементтерінін орнына нольдерді жазып жне матрицаны баспаа шыару. K<=5

 

2-тапсырма /иыныра есептер/

1. А(4,3) матрицаны элементтері екі-ш табалы немесе одан да кп табалы сандар болсын. Матрицаны рбір элементін оны цифрларыны осындысымен алмастыру керек. Шыан матрицаны крсетііз.
2. А(4,4) матрицаны саат тіліні баытымен 90 градуса бранда шыатын матрицаны крсетііз.
3. А(7,5) матрицаны элементтерін жол бойынша срыптап орналастырыыз.
4. А(5,7) матрицаны элементтерін баан бойынша срыптап орналастырыыз.
5. А(10) массив элементтерін ш трлі діспен срыптаыз /алмастыру дісі- метод обмена или пузырька, тікелей тадау дісі-метод прямого выбора, орындары бойынша срыптау-сортировка с вставкой/