Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Однов_мас.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
539.14 Кб
Скачать

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.