Розглянемо кілька задач на опрацювання значень елементів одновимірного масиву. У всіх задачах, розглянутих нижче, будемо вводити значення елементів масиву з багаторядкового поля, а виводити результат у багаторядкове поле, якщо результатом є значення елементів одновимірного масиву, або в напис. Створюватимемо процедури, пов’язані з подією OnClick для кнопки. При необхідності, ви зможете аналогічно створити процедури, пов’язані з іншими подіями або з іншими об’єктами.
Будемо розглядати всі масиви з 10 чисел. Якщо кількість елементів масиву інша, то потрібно буде внести до текстів процедур відповідні зміни.
Задача 2. Визначити, скільки разів зустрічається дане дійсне число серед значень елементів даного масиву з 10 дійсних чисел.
Очевидно, що для розв’язання цієї задачі потрібно переглянути послідовно значення всіх елементів масиву, порівняти кожне з них з даним числом, і якщо деяке з них дорівнює цьому числу, то збільшити лічильник таких елементів масиву на 1.
procedure TForm1.Button1Click(Sender: TObject);
var a: array [1..10] of Real; i, k: Integer; x: Real;
Begin
x := StrToFloat (Edit1.Text); //Уведення числа, з яким потрібно порівнюватизначення елементів масиву
k := 0;// Лічильник кількості елементів масиву, що дорівнюють даному числу х – їх поки що не зустрілося жодного
for i := 1 to 10 do
Begin
a[i] := StrToFloat (Memo1.Lines[i-1]);// Уведення значень елементів одновимірного масиву з багаторядкового поля
if a[i] = x then k := k+1;// Якщо значення чергового елемента масиву дорівнює заданому числу, то значення лічильника збільшується на 1
end;
Label1.Caption := IntToStr (k) + ' разів'// Виведення результату в напис з додаванням пояснювального тексту
end;
Звертаємо вашу увагу: якщо не включити перед початком другого циклу команду k := 0, то перше виконання команди k := k+1 може виявитися некоректним.
Задача 3. Визначити, чи зустрічається дане дійсне число серед значень елементів даного масиву з 10 дійсних чисел.
Можна було б розв’язати цю задачу аналогічно попередній: визначити, скільки елементів масиву дорівнюють даному числу, і якщо ця кількість 0, то даного числа в масиві немає, а якщо більше 0, то є. Але такий метод розв’язування є нераціональним. Уявіть собі, що дане число є значенням вже першого елемента масиву. Тоді всі інші елементи масиву переглядати не потрібно, а попередній метод розв’язування передбачає обов’язковий перегляд усіх елементів масиву.
Для реалізації раціонального методу розв’язування цієї задачі використаємо змінну логічного типу f і присвоїмо їй початкове значення false (дане число в масиві поки ще не зустрілося). Порівнюватимемо послідовно значення елементів масиву з даним числом і якщо один з них дорівнює даному числу, то змінимо значення змінної f на true і перервемо виконання циклу командою break (англ. break – переривати). Виведення результату реалізуємо залежно від значення змінної f.
procedure TForm1.Button1Click(Sender: TObject);
var a: array [1..10] of Real; i: Integer; x: Real; f: Boolean;
Begin
for i := 1 to 10 do
a[i] := StrToFloat (Memo1.Lines[i-1]);
x := StrToFloat (Edit1.Text);
f := false;// Дане число в масиві поки що не зустрілося
for i := 1 to 10 do
if a[i] = x