Зертханалық жұмыс
Тақырыбы:
Екі
өлшемді жиыммен жұмыс істеуге арналған кесте
компонентін
қолдану
Жұмыстың
мақсаты: Кесте құру компонентін
қолданып, екі өлшемді
жиымға бағдарлама құруға
үйрету.
Әдістемелік
нұсқау
Мысалы, B(2, 2) өлшемді
нақты саннан тұратын жиымының
сипатталуы:
Var B :
Array[1..2,
1..2] of real;
const жиым аты :
Аrray [индекс1,
индекс2] Оf элементтер типі =
(тізім);
Мысалы, var B :
Array[1..2,
1..2] of real=((12.5, 1.4),
(-45.8, 4.5));
Мысалы, B[2, 2]:=4.5
-
Екі өлшемді жиым элементтерін
енгізу, шығару және өңдеу үшін қабаттасқан параметрлі циклдік
операторларды қолданған ыңғайлы.
-
Жиым элементтерін
енгізуге StringGrid(Additional)
компоненті қолданылады.
Мысалы, 2011 жылы Алматы мен Астанада өткен 7-ші
қысқы Азиада ойындары қорытындысын шығаруға арналған бағдарлама
жазайық.
Енгізілетін
мәліметтер:
Мемлекеттер, медалдар саны (алтын, күміс және
қола);
|
Мемлекет
|
Алтын
|
Күміс
|
Қола
|
Барлығы
|
Ұпайлар
|
|
Корея
|
10
|
6
|
8
|
|
|
|
Қытай
|
8
|
6
|
7
|
|
|
|
Жапония
|
10
|
6
|
8
|
|
|
|
Қазақстан
|
18
|
12
|
17
|
|
|
Әрбір мемлекеттің спортшылары жинаған жалпы
медалдар саны мен ұпайларын есептеңіздер; (ұпайлар келесі жолмен
саналады: әрбір алтын медаль үшін – 7, күміс – 6, қола – 5
ұпай);
Жиналған ұпайлар бойынша мемлекеттер тізімін
сұрыптаңыздар.
Нәтиже:
|
Мемлекет
|
Алтын
|
Күміс
|
Қола
|
Барлығы
|
Ұпайлар
|
|
Қазақстан
|
18
|
12
|
17
|
47
|
283
|
|
Жапония
|
10
|
6
|
9
|
25
|
151
|
|
Корея
|
10
|
6
|
8
|
24
|
146
|
|
Қытай
|
8
|
6
|
7
|
21
|
127
|
Ол үшін:
-
Пішімге StringGrid1, Button1, Label1
компоненттерін орналастырамыз.
-
Label1 компонентінің Caption қасиетіне есептің
берілгенін жазамыз.
-
FixedCols=0, FixedRows=1; Кестенің бірінші
белгіленген жолының ұяшықтары кесте бағаналарының тақырыптарын
жазуға қолданылады.
-
RowCount=4,
ColCount=6 мәнін
береміз;
-
Options/goEditing=true
(түзетуге
рұқсат);
-
Қосымшаны құру кезінде жиымның
Cells элементтерінің мәндерін енгізуге болмайды, сол себептен
қосымшаны құру кезінде орындалатын OnActivate оқиға өңдеушіні
жазамыз:
procedure
TForm1.FormActivate(Sender: TObject);
begin
tab1.cells[0,0]:='Мемлекет';
tab1.cells[1,0]:='Алтын';
tab1.cells[2,0]:='Күміс';
tab1.cells[3,0]:='Қола';
tab1.cells[4,0]:='Барлығы';
tab1.cells[5,0]:='Ұпайлар';
tab1.cells[0,1]:='Корея';
ыab1.cells[0,2]:='Қытай';
tab1.cells[0,3]:='Жапония';
tab1.cells[0,4]:='Қазақстан';
end;
6. Button1 компонентінің
Caption қасиетіне «Қорытынды» мәнін береміз.
-
Компоненттерді төмендегідей
орналастырамыз:

-
Оқиға өңдеушіні жазу:
procedure
TForm1.Button1Click(Sender: TObject);
Var
c, s, p, m,
i, r:integer;
buf : array[0..5] of
string;
begin
For r:=1 to tab1.rowcount
do
begin
s:=0;
For c:=1
to 3 do
If
(tab1.cells[c,r]<>'')
then
s:=s+StrToInt(tab1.cells[c,r])
else
tab1.cells[c,r]:='0';
p:=7*StrToInt(tab1.cells[1,r])+6*StrToInt(tab1.cells[2,r])+5*StrToInt(tab1.cells[3,r]);
tab1.cells[4,r]:=IntToStr(s);
tab1.cells[5,r]:=IntToStr(p);
end;
For r:=1
to tab1.rowcount-1 do
begin
m:=r;
For i:=r To tab1.rowcount-1
Do
If
(StrToInt(tab1.cells[5,i]))>(StrToInt(tab1.cells[5,m]))
Then
m:=i;
If
r<>m then
begin
for c:=0
to 5 do
begin
buf[c]:=tab1.cells[c,r];
tab1.cells[c,r]:=tab1.cells[c,m];
tab1.cells[c,m]:=buf[c];
end;
end;
end;
end;
end.
9. Run командасын
орындау;
Деңгейлік тапсырмалар
-
А(n, m) матрицасы берілген.
Осы матрицаның ең үлкен элементін
табыңдар.
-
А(n, m) матрицасы берілген. Барлық мәндердің
арифметикалық ортасын табыңдар.
-
А(n, m) матрицасы берілген. Матрицаның ең үлкен және
ең кіші элементін тауып, олардың орындарын
ауыстырыңдар.
-
А(n, m) матрицасы берілген. Матрицаның басты
диагоналіндегі элементтерді 1 мен ауыстырыңдар.
-
10 x 10 бүтін А матрицасы берілген. А матрицасы
мына ретпен толтырыңдар.
