Өзіндік жұмысқа арналған тапсырмалар:
А(10) массиві берілген. Массив элементтерінің арифметикалық ортасын табыңыз.
А(10) массиві берілген. Массивтегі оң элементтердің көбейтіндісін, теріс элементтердің қосындысын табыңыз.
А(15) массиві берілген. Массивтегі ең үлкен және ең кіші элементті тауып, оларды орындарымен ауыстырыңыз.
№2 Зертханалық жұмыс
Тақырыбы: Екі өлшемді массивтермен жұмыс
Зертханалық жұмыстың мақсаты: Delphi ортасында екі өлшемді массивтерге әр түрлі амалдарды қолданып, есептер шығару. StringGrid компонентімен және оның қасиеттері мен әдістерімен жұмыс жасауды үйрену.
1-тапсырма. 5*5 матрицасы берілген. Матрицадағы бас диагональдан жоғары орналасқан тақ элементтердің санын, бас диагональдан төмен орналасқан жұп элементтердің қосындысын тап.
Төменде (2.1.10-сурет) осы қосымшаның компоненттер орналастырылған форма терезесі келтірілген:
2.1.10-сурет. Компоненттер орналастырылған форма терезесі
Тапсырманы орындау алгоритмі:
1. Жаңа жобаны ашып, пішіннің Caption қасиетіне «Матрицамен жұмыс» деген мәнді жазыңыз және Color қасиетін белгілеп, пішіннің кез келген фондық түсін таңдауға болады.
2. Пішінге Standard бетіндегі Label1, Label2, label3, Button1, Additional бетіндегі StringGrid1 компоненттерін орналастырыңыз. Label1 компонентінің Caption қасиетіне «Матрица», Button1 батырмасына «Есептеу» деп жазыңыз, ал Label2 мен label3 тазалаңыз. Осы компоненттер үшін Font қасиетін белгілеп, қажетті мәтіннің шрифтін өзгертуге болады.
3. StringGrid1 компонентін ерекшелеп, FіxеdCols және FіxеdRows қасиеттеріне 0 мәндерін, RowCount (жолдар саны 5) қасиетіне 5, ColCount (бағандар саны 5) қасиетіне 5 мәндерін беріңіз, Options опциясының ішндегі goEditing, goTabs, goAlwaysShowEditor қасиеттерін true деп өзгертіңіз.
4. Button1 батырмасына оқиғаны өңдеу процедурасын құру үшін, батырманы ерекшелеп, обьектілер инспекторы терезесінің Оқиғалар бетіндегі OnClick оқиғасына немесе батырманы екі рет шертіңіз. Пайда болған процедураның дайындамасына келесі кодты жазыңыз:
procedure TForm1.Button1Click(Sender: TObject);
var
A:array[1..5,1..5] of integer;
i,j,k,S:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do
A[i,j]:=StrToInt(StringGrid1.Cells[i-1,j-1]);
S:=0; k:=0;
for i:=1 to 5 do
for j:=1 to 5 do
if ((i
S:=S+A[i,j];
begin
for i:=1 to 5 do
for j:=1 to 5 do
if ((i>j) and (A[i,j] mod 2=1)) then
k:=k+1;
Label2.Caption:= ‘Бас диагональдан төмен орналасқан жұп элементтердің қосындысы '+IntToStr(S);
Label3.Caption:= ‘Бас диагональдан жоғары орналасқан тақ элементтердің саны ' +IntToStr(k);
end;
end;
end.
Төменде (2.1.11-сурет) осы программаның блок-схемасы көрсетілген:
2.1.11-сурет. Программаның блок-схемасы
5. Жобаны сақтап, қосымшаны орындауға жіберіңіз. Төменде (2.1.12-сурет) қосымшаны іске қосқанда шыққан нәтиже көрсетілген:
2.1.12-сурет. Қосымшаның орындалу нәтижесі
2-тапсырма. k (0Төменде (2.1.13-сурет) осы программаның компоненттер орналастырылған форма терезесі мен орындалу нәтижесі терезесі келтірілген.
Тапсырманы орындау алгоритмі:
2.1.13-сурет. Компоненттер орналастырылған форма терезесі мен орындалу нәтижесі терезесі
Жаңа жобаны ашыңыз.
Пішінге Standard бетіндегі Label1, Label2, label3, label4, label5, Button1, Edit1 компоненттерін Additional бетіндегі StringGrid1, BitBtn1 компоненттерін орналастырыңыз. Label1 компонентінің Caption қасиетіне «К», Label2-ге «жол қосындысы», label3-ке «жол көбетіндісі», Button1 батырмасына «ОК» мәндерін жазыңыз.
BitBtn1 батырмасын ерекшелеп, обьектілер инспекторы терезесіндегі Kind қасиетінің ішінен bkClose мәнін таңдаңыз.
StringGrid1 компонентін ерекшелеп, FіxеdCols және FіxеdRows қасиеттеріне 0 мәнін, RowCount (жол саны 10) қасиетіне 10, ColCount (баған саны 4) қасиетіне 4 мәндерін беріңіз, Options опциясының ішндегі goEditing, goTabs, goAlwaysShowEditor қасиеттерін true деп өзгертіңіз.
Button1 батырмасын екі рет шертіңіз. Пайда болған процедураның дайындамасына келесі кодты жазыңыз:
procedure TForm1.Button1Click(Sender: TObject);
var a:array[1..4,1..10] of integer;
p,s: real; k,i,j:integer;
begin
k:=strToInt(Edit1.Text);
For i:=1 to 4 do
For j:=1 to 10 do
a[i,j]:=strToInt(StringGrid1.Cells[i-1,j-1]);
P:=1; S:=0;
For i:=1 to 4 do
For j:=1 to 10 do
if ((k>0) and (k<11))then
begin
For j:=1 to 10 do
begin
For i:=1 to 4 do
begin
if j=k then begin
S:=S+a[i,j];
P:=P*a[i,j]; end; end; end;
Label4.Caption:=FloatTostr(S);
Label5.Caption:= FloatToStr(P);
end;
end;
end.
Төменде (2.1.14-сурет) осы программаның блок-схемасы көрсетілген:
2.1.14-сурет. Программаның блок-схемасы
Жобаны сақтап, қосымшаны орындауға жіберіңіз.
Достарыңызбен бөлісу: |