
- •2.2 Описування одновимірних масивів
- •2.3 Виведення елементів одновимірного масиву
- •2.3.1 Виведення в Edit
- •2.3.2 Виведення у Label
- •2.3.3 Виведення у вікно повідомлень
- •2.3.4 Виведення у Memo
- •2.3.5 Виведення у ListBox
- •2.4 Введення елементів масиву
- •2.4.1 Введення з вікна Memo
- •2.4.2 Введення з ListBox
- •2.4.3 Введення з Edit
- •3 Приклади програм з одновимірними масивами
- •4 Контрольні запитання
- •5 Лабораторне завдання
- •6 Варіанти індивідуальних завдань
3 Приклади програм з одновимірними масивами
Приклад 1. Скласти схему алгоритму та проект програми в Delphi для обчислення елементів вектора за формулою
та виведення на форму проекту:
елементів вектора в компонент Memo;
суми елементів;
кількості від’ємних елементів;
мінімального елемента та його номера за порядком:
елементів нового вектора (r) в компонент ListBox, який є результатом обміну місцями значень першого та мінімального елементів у векторі (v).
Схеми алгоритмів підпрограм наведено на рисунках 5.1-5.5.
Форма проекту із результатами роботи має вигляд:
Текст програми:
unit Unit1;
……………………………………..
implementation
{$R *.DFM}
Const n=12;
Type vect=array[1..n] of real;
var v,r:vect;i:integer;
// процедура обчислення елементів вектора
Procedure elem_v;
begin
for i:=1 to n do
v[i]:=cos(4*i)+exp(-2*i);
end;
// процедура обчислення суми елементів вектора
Procedure summa ( var s:real);
begin
s:=0;
for i:=1 to n do
s:=s+v[i];
end;
// процедура обчислення кількості від’ємних елементів вектора
Procedure kol_otr(var k:integer);
begin
k:=0;
for i:=1 to n do
if v[i]<0 then k:=k+1;
end;
// процедура обчислення мінімального елемента та його номера
Procedure min_el(var min:real;var nom_min:integer);
begin
min:=v[1]; nom_min:=1;
for i:=2 to n do
if v[i]<min then
begin min:=v[i]; nom_min:=i; end;
end;
// процедура відгуку на натиснення кнопки “Вихід”
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
// процедура відгуку на кнопку “Пуск”
procedure TForm1.Button1Click(Sender: TObject);
var si,sv,sr,ssum,smin:string;
sum, min,pr:real; kol,nom:integer;
begin
elem_v ; // обчислення елементів вектора
// виведення масиву в Memo
for i:=1 to n do
begin str(v[i]:7:3,sv);
str(i:3,si);
Мemo1.Lines.Add(si+sv);
end;
// обчислення суми та виведення результатів в Edit
summa(sum);
str(sum:7:3,sv);
Edit1.Text:=sv;
// обчислення кількості від’ємних елементів з виведенням результатів
kol_otr(kol);
Edit2.Text:= IntToStr(kol);
// пошук мінімального елемента
min_el(min, nom);
// виведення результатів в Edit
str(min:7:3,smin);
Edit3.Text:=IntToStr(nom)+'-й елемент '+smin;
// формування масиву результатів із обміном елементів
r:=v;
pr:=r[1]; r[1]:=r[nom];r[nom]:=pr;
// виведення масиву в ListBox
for i:=1 to n do
begin str(r[i]:7:3,sr);
str(i:3,si);
ListBox1.Items.Add(si+sr);
end;
end;
end.
Приклад 2 Скласти схему алгоритму та проект програми в Delphi для введення 15-ти (або менше) цілих чисел з компонента Мемо та вивести їх за зростанням у вікно повідомлень (ShowMessage).
Схеми алгоритмів підпрограм наведено на рисунках 5.6-5.7.
Вхід
Рисунок 5.6 – Схема підпрограми сортування
вектора за зростанням
i=1,n-1
i=1,k
k=кількість
i=1,k
Введення
ai
Кінець
Рисунок. 5.7 – Схема
головної
програми (відгук
на кнопку “Пуск”
до прикладу 2)
Форма проекту із результатами роботи програми має вигляд:
Текст програми:
unit Unit1;
interface
…………………………………………..
implementation
{$R *.DFM}
Type vect=array[1..15]of integer;
// процедура сортування вектора за зростанням
procedure sort(var x:vect; n:integer);
var i,j,z:integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if x[i]>x[j] then
begin z:=x[i]; x[i]:=x[j]; x[j]:=z; end;
end;
// процедура відгуку на кнопку “Новий масив”
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Clear; edit1.Clear;
end;
// процедура відгуку на натиснення кнопки “Пуск”
procedure TForm1.Button1Click(Sender: TObject);
var a:vect;
i, k:integer;
sa,sr:string;
begin
// визначення та виведення кількості введених чисел
k:=Memo1.Lines.Count; edit1.text:=intToStr(k);
// введення елементів вектора
for i:=1 to k do
begin
sa:= Memo1.Lines[i-1];
a[i]:=StrToInt(sa);
end;
sort(a,k); // сортування вектора
// виведення елементів вектора
sr:='';
for i:=1 to k do
begin sa:=IntToStr(a[i]);
sr:=sr+sa+#13; end;
ShowMessage(sr);
end;
end.