Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Масив.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
228.66 Кб
Скачать

3. Компонент StringGrid.

Компонент StringGrid розташований на стрінці Additional палітри компонентів. Він призначений для створення таблиць, в комірках яких можуть бути розташовані довільні текстові рядки. Така таблиця має 2 частини – фіксовану і робочу. Фіксована частина призначена для показу заголовків рядків та стовбчиків і для ручного керування їх розмірами. Робоча частина - це вся інша таблиця. Кількість рядків та стовбчиків робочої частини може задаватись як під час створення таблиці на формі, так і створюватись програмно. Якщо кількість рядків і стовбчиків робочої частини досить велика, робоча частина може не вміщуватись у вікно компонента, і тоді у компоненті автоматично з’являються смуги прокрутки.

Даний компонент має багато властивостей, деякі з яких ми вже вивчали розглядаючи інші компоненти (наприклад: BorderStyle, ScrollBars), деякі є специфічними для StringGrid. Розглянемо деякі з цих властивостей:

Назва властивості

Значення властивості

Col : LongInt

Вміщує номер стовбця сфокусованої комірки

Row : LongInt

Вміщує номер рядка сфокусованої комірки

Cells [ACol, ARow : LongInt] : String

Визначає вміст комірки з координатами ACol, Arow

ColCount : LongInt

Вміщує кількість стовбців таблиці

RowCount : LongInt

Вміщує кількість рядків таблиці

Cols [Index : LongInt]: String

Вміщує всі комірки колонки з індексом Index

Rows [Index : LongInt]: String

Вміщує всі комірки рядка з індексом Index

FixedCols : Integer

Визначає кількість стовбців фіксованої зони

FixedRows : Integer

Визначає кількість рядків фіксованої зони

Option

Вміщує параметри таблиці:

goEditing – дозволяє (true) або забороняє (false) редагування комірки;

goTabs – дозволяє обходити комірки за допомогою клавіші <Tab>

goColSizing – дозволяє змінювати ширину стовбців

goRowSizing – дозволяє змінювати висоту рядків

4. Найпростіші задачі.

Задача 1. Створити одновимірний масив з N дійсних чисел, знайти суму його елементів, а також визначити, чи є в ньому елементи, рівні числу Т. Число Т повинно вводитись з клавіатури.

Розв’язування.

Перелік використаних компонентів та їх властивості:

Компонент

Властивість

Значення

Form1

Caption

Додавання та пошук у одновимірному масиві

Label1

Caption

Текст відсутній

Memo1

Lines

Текст відсутній

Memo1

ScrollBars

SsVertical

Label2

Caption

Введіть число Т :

Edit1

Text

Текст відсутній

Label3

Caption

Сума елементів масива:

Edit2

Text

Текст відсутній

Label4

Caption

Кількість елементів, рівних числу Т:

Edit3

Text

Текст відсутній

Button1

Caption

Розв'язок

Button2

Caption

Новий розв'язок

Button3

Caption

Вихід

Вигляд форми з поміщеними на ній компонентами:

Текст програми :

{Об’явлення константи N – кількості елементів масива}

const n=12;

{Кнопка “Вихід”}

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

{Кнопка “Розв’язок”}

procedure TForm1.Button1Click(Sender: TObject);

var

i,k:longint;

a:array[1..n] of real;

s,t:real;

s1:string;

begin

s:=0;

k:=0;

t:=strtofloat(edit1.Text);

for i:=1 to n do

begin

a[i]:=strtofloat(memo1.Lines[i-1]);

s:=s+a[i];

if t=a[i] then k:=k+1;

end;

str(s:5:2,s1);

edit2.Text:=s1;

edit3.text:=inttostr(k);

end;

{Оброблювач події встановлення початкових значень у працюючій програмі}

procedure TForm1.FormCreate(Sender: TObject);

begin

label1.Caption:='Введіть '+inttostr(n)+' дійсних чисел:'

end;

{Кнопка “Новий розв’язок”}

procedure TForm1.Button2Click(Sender: TObject);

begin

memo1.Lines.Clear;

edit1.clear;

edit2.Clear;

edit3.Clear;

memo1.SetFocus;

end;

Результат роботи програми:

Задача 2. Створити двовимірний масив цілих чисел розміром 3 х 4, знайти суми елементів рядків масиву, визначити середнє арифметичне елементів масиву, а також кількість елементів масиву, значення яких більше середнього значення.

Розв’язування.

Перелік використаних компонентів та їх властивості:

Компонент

Властивість

Значення

Form1

Caption

Двовимірний масив

Label1

Caption

Вхідний масив:

StringGrid1

FixedCols

1

StringGrid1

FixedRows

1

StringGrid1

ColCount

5

StringGrid1

RowCount

4

StringGrid1

Options.goTabs

true

StringGrid1

Options.goEditing

true

Label2

Caption

Суми елементів рядків:

StringGrid2

FixedCols

0

StringGrid2

FixedRows

1

StringGrid2

ColCount

3

StringGrid2

RowCount

2

Label3

Caption

Сума елементів масива:

Edit1

Text

Текст відсутній

Label4

Caption

Кількість елементів, рівних числу Т:

Edit2

Text

Текст відсутній

Button1

Caption

Розв'язок

Button2

Caption

Новий розв'язок

Button3

Caption

Вихід

Вигляд форми з поміщеними на ній компонентами:

Текст програми:

{Об’явлення змінних i, j, що використовуються в декількох процедурах}

var

i,j:integer;

{Кнопка “Вихід”}

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

{Кнопка “Новий розв’язок”}

procedure TForm1.Button2Click(Sender: TObject);

begin

for i:=1 to 3 do

for j:=1 to 4 do StringGrid1.Cells[j,i]:='';

for i:=1 to 3 do StringGrid2.Cells[i-1,1]:='';

edit1.Clear;

edit2.Clear;

end;

{Кнопка “Розв’язок”}

procedure TForm1.Button1Click(Sender: TObject);

var

s:array[1..3] of integer;

a:array[1..3,1..4] of integer;

sa:real;

st:string;

k:longint;

begin

for i:=1 to 3 do

begin

s[i]:=0;

for j:=1 to 4 do

begin

a[i,j]:=strtoint(stringgrid1.Cells[j,i]);

s[i]:=s[i]+a[i,j];

end;

stringgrid2.Cells[i-1,1]:=inttostr(s[i]);

end;

sa:=0;

for i:=1 to 3 do

for j:=1 to 4 do sa:=sa+a[i,j];

sa:=sa/12;

str(sa:5:1,st);

edit1.Text:=st;

k:=0;

for i:=1 to 3 do

for j:=1 to 4 do

if a[i,j]>sa then k:=k+1;

edit2.text:=inttostr(k);

end;

{Оброблювач події встановлення початкових значень у працюючій програмі}

procedure TForm1.FormCreate(Sender: TObject);

begin

for i:=1 to 3 do stringgrid1.Cells[0,i]:=inttostr(i)+'-й рядок';

for i:=1 to 4 do stringgrid1.Cells[i,0]:=inttostr(i)+'-й стовбчик';

for i:=1 to 3 do stringgrid2.Cells[i-1,0]:=inttostr(i)+'-й рядок';

end;

Результат роботи програми: