Пошук дних у масиві


1.    Задача на визначення, скільки разів трапляється дане дійсне число серед елементів масиву.
В задачах, будемо вводити значення елементів масиву з багаторядкового поля, а виводити результат у багаторядкове поле, якщо результатом є значення елементів одновимірного масиву, або в напис; створюватимемо процедури, пов’язані з подією OnClick для кнопки. За потреби ви зможете аналогічно створити процедури, пов’язані з іншими подіями або з іншими об’єктами.
Будемо розглядати всі масиви з десяти чисел. Якщо кількість елементів масиву інша, то потрібно буде внести до текстів процедур відповідні зміни.
Задача. Визначити, скільки разів трапляється дане дійсне число серед значень елементів даного масиву з десяти дійсних чисел.
Очевидно, що для розв’язування цієї задачі потрібно переглянути послідовно значення всіх елементів масиву, порівняти кожне з них з даним числом, і якщо деяке з них дорівнює цьому числу, то збільшити лічильник таких елементів масиву на 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 може виявитися некоректним.



2.      Задача на визначення, чи трапляється дане дійсне число серед елементів масиву.
Задача. Визначити, чи трапляється дане дійсне число серед значень елементів даного масиву з десяти дійсних чисел.
Можна було б розв’язати цю задачу аналогічно попередній: визначити, скільки елементів масиву дорівнюють даному числу, і якщо ця кількість 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
then begin
f := true; // Дане число в масиві трапилося
break; {Перериваємо виконання циклу, бо число трапилося в масиві}
end;
if f
then Label1.Caption := 'трапляється'
else Label1.Caption := 'не трапляється';
end;

Практичні завдання:
1. Створіть проект, у якому потрібно сформувати масив із дев’яти цілих чисел, що знаходяться в рядках багаторядкового поля, визначте, чи трапляються серед значень елементів цього масиву числа, кратні числу 3, і виведіть результат у напис. Створіть у власній папці папку Проект 1. і збережіть у ній проект.
2. Створіть проект, у якому потрібно сформувати масив із десяти дійсних чисел, що знаходяться в рядках багаторядкового поля, знайдіть кількість від’ємних елементів у заданому масиві дійсних чисел, виведіть результат у напис. Створіть у власній папці папку Проект 2. і збережіть у ній проект.

Комментариев нет:

Отправить комментарий