2-тапсырма. Қолданушыға массивтің өлшемін енгізуді ұсынатын және массивті кездейсоқ бүтін сандармен толтырып, содан кейін қолданушының таңдауымен массивтің минималды және максималды элементтерін, барлық элементтердің қосындысын, оң элементтердің санын анықтайтын қосымша құрыңыз.
Төменде (2.1.4-сурет) осы қосымшаның компоненттер орналастырылған форма терезесі келтірілген.
2.1.4-сурет. Компоненттер орналастырылған форма терезесі
Тапсырманы орындау алгоритмі:
Жаңа жобаны ашып, пішіннің Caption қасиетіне «Массивпен жұмыс» деген мәнді жазыңыз.
Пішінге Edit1 (элемент саны) және Edit2 (массив), Label1(«элемент саны»), Label2(«массив»), Button1 («Массив құру») компоненттерін орналастырыңыз. Осы компоненттердің Caption қасиетіне жақшаның ішінде тырнақшаға алынып жазылған мәндерді жазыңыз.
Пішінге GroupBox1 панелін орналастырып, Caption қасиетіне «Анықтау керек» мәнін жазыңыз.
Ескерту:
GroupBox панелі – бұл RadioButton, CheckBox жалаушалары, т.б. тәрізді бір-бірімен байланысқан басқару органдарының топтарын біріктіретін жазуы және рамкасы бар контейнер.
GroupBox1 панеліне CheckBox1, CheckBox2, CheckBox3 және CheckBox4 компоненттерін орналастырыңыз, Caption қасиетіне «Минимальды элемент», «Максимальды элемент», «Элементтердің қосындысы», «Оң элементтердің саны» мәндерін беріңіз.
Жалаушаларға қарама-қарсы Edit3, Edit4, Edit5 және Edit6 компоненттерін орналастырыңыз. Егер жалаушалар GroupBox1 панелінің артында қалып, көрінбей қалса, онда тышқанның контекстік мәзірінен Control ► Send to Back командасын таңдаңыз.
Пішіннің төменгі жағына Button2 батырмасын орналастырып, Caption қасиетіне «Есептеу» мәнін жазыңыз.
Edit1, Edit2, Edit3, Edit4, Edit5, Edit6 компоненттерінің Техт қасиеттерін тазалаңыз.
Пішіндегі компоненттердің өлшемдерін суретте көрсетілгендей етіп түзеңіз.
Жобаны сақтаңыз.
Button1 және Button2 батырмаларына оқиғаларды өңдеуді құрудың алдында айнымалыларды сипаттау бөліміне N және I бүтін типті айнымалысын, сонымен қатар, М бүтін сандардың динамикалық массивін сипаттаңыз.
Сызықтық массивті құру және өңдеу
var Form1: TForm1;
N,I: integer;
М: array of integer; {бүтін сандардың динамикалық массивін сипаттау}
Енгізуді білдіру үшін Edit1 терезесіне оқиғаны өңдеушіні құрамыз. Бұл 0-ден 9-ға дейінгі сандардан басқа кез келген символдарды енгізуді болдырмау үшін қажет.
Edit1 терезесіне оқиғаны өңдеу процедурасын құру үшін , пішінде Edit1 компонентін ерекшелеп, обьектілер инспекторы терезесінің Events бетіндегі On Key Press оқиғасына тышқанның сол жақ батырмасымен екі рет шертіңіз. Осыдан кейін редактор терезесі фокусты алады және interface бөлімінде оқиғаны өңдеу процедурасының мынадай жазбасы пайда болады:
procedure Edit1KeyPress(Sender: TObject; var Key:Char);
ал implementation бөлімінде осы процедураның дайын мәтіні шығады:
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
begin
end;
Процедураның денесіне келесі операторды жазыңыз:
if not (Key in ['0'..'9']) then Key:=#0;
Бұл операторда Key айнымалысының мәні ['0'..'9'] мәндер жиынымен салыстырылады. Егер пернеден басылған символ бұл мәндер жиынына кірмесе, онда Кеу мәніне (#0) нөлдік символы меншіктеледі.
Осыдан кейін Edit2 терезесінде тек сандардан тұратын мәтін шығады.
Button1 батырмасына оқиғаны өңдеу процедурасын құру үшін, батырманы ерекшелеп, обьектілер инспекторы терезесінің Оқиғалар бетіндегі OnClick оқиғасына немесе батырманы екі рет шертіңіз. Пайда болған процедураның дайындамасына келесі кодты жазыңыз:
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
N:=StrToInt(Edit1.Text); {массив элементтерінң саны}
SetLength(M, N); {М массивіне N өлшемді беру}
Edit2.Text:=' '; { Edit2 терезесін тазалау}
for I:= 0 to N-1 do { массивті кездейсоқ бүтін сандармен толтыру}
begin
M[I]:= Round(Sin(Random(100))*100); { массив элементіне кездейсоқ мәнді меншіктеу}
Edit2.Text:=Edit2.Text+' '+IntToStr(M[I]); { массив элементтерін шығару}
end; end;
Button2 батырмасына массивті өңдеу оқиғасын құру үшін, батырманы екі рет шертіп, пайда болған процедураның дайындамасына келесі кодты жазыңыз:
procedure TForm1.Button2Click(Sender: TObject);
var Max, Min, Sum, CountPlus:integer; {массивті өңдеу нәтижелері}
begin
if CheckBox1.Checked then Min:=M[0]; {Min-нөлдік элемент болсын}
Edit3.Text:=' ';
if CheckBox2.Checked then Max:=M[0]; {Max-нөлдік элемент болсын}
Edit4.Text:=' '; Sum:=0; {Sum мәнін нөлге теңестіру}
Edit5.Text:=' ';
CountPlus:=0; {оң элементтердің қосындысының мәнін нөлге теңестіру}
Edit6.Text:=' ';
for I:=0 to N-1 do
begin
if CheckBox1.Checked then {массивтің минимальды элементін анықтау}
if Min>M[I] then Min:=M[I];
if CheckBox2.Checked then { массивтің максимальды элементін анықтау }
if Max
if CheckBox3.Checked then {массив элементтерін қосу}
Sum:=Sum+M[I];
if CheckBox4.Checked then {массивтің оң элементтерін санау}
if M[I]>0 then CountPlus:=CountPlus+1; end;
{нәтижесін шығару}
if CheckBox1.Checked then Edit3.Text:=IntToStr(Min);
if CheckBox2.Checked then Edit4.Text:=IntToStr(Max);
if CheckBox3.Checked then Edit5.Text:=IntToStr(Sum);
if CheckBox4.Checked then Edit6.Text:=IntToStr(CountPlus);
end; End.
Төменде (2.1.5-сурет) осы программаның блок-схемасы көрсетілген:
2.1.5-сурет. Программаның блок-схемасы
15. Жобаны сақтап, қосымшаны орындауға жіберіңіз. Төменде (2.1.6-сурет) қосымшаны іске қосқанда шыққан нәтиже көрсетілген.
2.1.6-сурет. Қосымшаның орындалу нәтижесі
Достарыңызбен бөлісу: |