Використання компоненту StringGrid
Поняття про масиви
Масив — це структура даних, що є набором змінних однакового типу, що мають загальне ім'я. Масиви зручно використовувати для зберігання однорідної по своїй природі інформації, наприклад, таблиць і списків.
Масиви є одновимірні(лінійні таблиці), двовимірні(прямокутні таблиці) та багатовимірні.
Одновимірний масив, який має вісім елементів.
Двовимірний масив.
Оголошення масиву
Масив, як і будь-яка змінна програми, перед використовуванням повинен бути оголошений в розділі оголошення змінних.
В загальному вигляді інструкція оголошення масиву виглядає таким чином:
Ім'я: array [нижній_індекс. .верхній_індекс] тип
де: ім'я — ім'я масиву;
array — зарезервоване слово мови Delphi, що позначає, що оголошуване ім'я є ім'ям масиву;
нижній_індекс і верхній_індекс — цілі константи, що визначають діапазон зміни індексу елементів масиву і, неявно, кількість елементів (розмір) масиву;
тип — тип елементів масиву.
3. Приклади оголошення масивів
temper:array[1..31] of real;
коеf:array[0. .2] of integer;
name:array[1..30] of string[25];
Нижче наведено як приклад оголошення масиву назв команд-учасниць чемпіонату по футболу, в якому використовуються іменовані константи.
const
NT = 18; // число команд
SN = 25; // гранична довжина назви команди var
team: array[1..NT] of string[SN];
4. Операції з масивами
Типовими операціями при роботі з масивами є:
• виведення масиву;
• введення масиву;
• пошук максимального або мінімального елемента масиву;
• пошук заданого елемента масиву;
• сортування масиву.
Введення масиву
Під введенням масиву розуміється процес отримання від користувача (або з файлу) під час роботи програми значень елементів масиву. Елементи масиву можна вводити в Delphi різними способами. Часто використовують компоненти Memo та StringGrid.
Використання компоненту StringGrid
Для введення масиву зручно використовувати компонент StringGrid. Значок компоненту StringGrid знаходиться на вкладці Additional .
Компонент StringGrid є таблицею, комірки якої містять рядки символів.
В таблиці перераховані деякі властивості компоненту StringGrid.
Властивість | Визначає |
Name | Ім'я компоненту. Використовується в програмі для доступу до властивостей компоненту |
ColCount | Кількість колонок таблиці |
RowCount | Кількість рядків таблиці |
Cells[i,j]); | Відповідний таблиці двовимірний масив. Елемент таблиці, що знаходиться на перетині стовпця номер col і рядки номер row визначається елементом сеlls [col, row] |
FixedCols | Кількість зафіксованих зліва колонок таблиці. Зафіксовані колонки виділяються кольором і при горизонтальній прокрутці таблиці залишаються на місці |
Проект 1.
Розробити проект для знаходження суми додатніх елементів масиву А[1..N], де N=7.Для введення елементів масиву використати компонент StringGrid. Для виводу результату компонент Label.
На форму встановити компоненти: StringGrid, Button1, Button2, Label.
Властивості StringGrid:
Властивість | Значення |
ColCount | |
RowCount | |
Options/goEditing | True |
FixedCols |
Код процедури:
procedure TForm1.Button1Click(Sender: TObject);
const n=6;
var a:array[1..n] of integer;
i,s:integer;
Begin
for i:=1 to n do
begin
a[i]:=StrToInT(StringGrid1.Cells[i-1,0]);
end;
s:=0;
for i:=1 to n do
if a[i]>0 then s:=s+a[i];
label1.Caption:='S='+IntToStr(s);
End;
Нехай дано таблицю здійснення рейсів N автобусами протягом M днів. Рейси, що відбулися, позначаються в таблиці цифрою 1, а ті, що з деяких причин не відбулися, - цифрою 0. Треба скласти програму, яка підраховує кількість рейсів, що не відбулися.
Приклад програми
program voyage;
var R :array[1..30,1..100] of byte;
і, j, n, m, count : integer;
begin
write ('Задайте кількість автобусів: ');
repeatreadIn(n) until (n > 0) and (n <= 30);
write ('Задайте кількість днів: ');
repeatreadln (m) until (m > 0) and (m <= 100);
writeln ('Задайте інформацію про здійснення рейсів: ');
for i := 1 to n do for j := 1 to m do beginwrite (i, ' автобус, ', j, ' день: ');
repeatreadln(R[i,j]) until (R[i, j] = 0) or (R[i, j] = 1) end;count := 0;
for і := 1 to n do
for j := 1 to m do
if R[i. j] = 0 then count := inc (count);
writeln ('Кількість нездійснених рейсів: ', count:5);
repeat
until
Key
Pressed
end.