Поділіться своєю думкою про онлайн уроки інформатики. Пройдіть анонімне опитування на головній сторінці сайту
for i := 1 to n do
if students[i].averageGrade > 90 then
ShowMessage('Студент ' + students[i].name + ' має високий середній бал: ' + students[i].averageGrade);
class Student:
def __init__(self, name, average_grade):
self.name = name
self.average_grade = average_grade
def linear_search(students, threshold):
for student in students:
if student.average_grade > threshold:
print(f'Студент {student.name} має високий середній бал: {student.average_grade}')
# Ініціалізація масиву студентів (для прикладу)
students_list = [
Student('Анна', 92.5),
Student('Олексій', 88.0),
Student('Катерина', 95.3),
Student('Іван', 89.7),
Student('Ольга', 91.8)
]
# Пошук студентів з високим середнім балом (більше 90) за допомогою лінійного пошуку
linear_search(students_list, 90)
unit Main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
EditThreshold: TEdit;
MemoResults: TMemo;
ButtonSearch: TButton;
procedure ButtonSearchClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
type
Student = class
public
name: string;
averageGrade: real;
constructor Create(n: string; g: real);
end;
constructor Student.Create(n: string; g: real);
begin
name := n;
averageGrade := g;
end;
var
students: array of Student;
i: integer;
{ TForm1 }
procedure TForm1.ButtonSearchClick(Sender: TObject);
var
threshold: real;
begin
MemoResults.Clear;
// Ініціалізація масиву об'єктів студентів (для прикладу)
SetLength(students, 5);
students[0] := Student.Create('Анна', 92.5);
students[1] := Student.Create('Олексій', 88.0);
students[2] := Student.Create('Катерина', 95.3);
students[3] := Student.Create('Іван', 89.7);
students[4] := Student.Create('Ольга', 91.8);
// Обробка введеного порогового балу
if TryStrToFloat(EditThreshold.Text, threshold) then
begin
for i := 0 to High(students) do
if students[i].averageGrade > threshold then
MemoResults.Lines.Add('Студент ' + students[i].name + ' має високий середній бал: ' +
FloatToStr(students[i].averageGrade));
end
else
ShowMessage('Введіть коректний пороговий бал!');
end;
end.
За матеріалами завдань уроку, опублікованого користувачем Стефурак Марія Миколаївна на сайті На Урок за посиланням
https://naurok.com.ua/konspekt-poshuk-u-masivi-za-pevnimi-kriteriyami-234883.html
Практична робота
Давайте розглянемо тему "Пошук у масиві (списку) за певними критеріями". Я підготую три задачі з розв'язком на Python, а також приклади реалізації в Lazarus (Pascal).
Умова: Знайти задане число в списку та повернути його індекс. Якщо число не знайдено, повернути -1.
Python
python
def find_number(arr, target):
for index, number in enumerate(arr):
if number == target:
return index
return -1
# Приклад використання
numbers = [1, 2, 3, 4, 5]
result = find_number(numbers, 3)
print("Індекс:", result) # Виведе: Індекс: 2
Lazarus (Pascal)
Створіть новий проект:
Виберіть "File" -> "New" -> "Application".
Додайте елементи на форму:
TEdit для введення шуканого числа.
TButton для запуска пошуку.
TLabel для відображення результату.
Код для обробника події:
pascal
procedure TForm1.Button1Click(Sender: TObject);
var
numbers: array[0..4] of Integer = (1, 2, 3, 4, 5);
target, i: Integer;
found: Boolean;
begin
target := StrToInt(Edit1.Text);
found := False;
for i := 0 to High(numbers) do
begin
if numbers[i] = target then
begin
Label1.Caption := 'Індекс: ' + IntToStr(i);
found := True;
Break;
end;
end;
if not found then
Label1.Caption := 'Не знайдено';
end;
Умова: Знайти всі індекси заданого числа в списку.
Python
python
def find_all_occurrences(arr, target):
indices = []
for index, number in enumerate(arr):
if number == target:
indices.append(index)
return indices
# Приклад використання
numbers = [1, 2, 3, 2, 5]
result = find_all_occurrences(numbers, 2)
print("Індекси:", result) # Виведе: Індекси: [1, 3]
Lazarus (Pascal)
Елементи на формі:
Використайте ті ж елементи, що й у попередньому проекті.
Обробник події для натискання кнопки:
pascal
procedure TForm1.Button1Click(Sender: TObject);
var
numbers: array[0..4] of Integer = (1, 2, 3, 2, 5);
target, i: Integer;
indices: String;
begin
target := StrToInt(Edit1.Text);
indices := '';
for i := 0 to High(numbers) do
begin
if numbers[i] = target then
begin
indices := indices + IntToStr(i) + ' ';
end;
end;
if indices <> '' then
Label1.Caption := 'Індекси: ' + Trim(indices)
else
Label1.Caption := 'Не знайдено';
end;
Умова: Знайти всі числа в масиві, що знаходяться в заданому діапазоні.
Python
python
def find_in_range(arr, low, high):
result = []
for number in arr:
if low <= number <= high:
result.append(number)
return result
# Приклад використання
numbers = [1, 2, 3, 4, 5]
result = find_in_range(numbers, 2, 4)
print("Числа в діапазоні:", result) # Виведе: Числа в діапазоні: [2, 3, 4]
Lazarus (Pascal)
Елементи на формі:
Додайте два TEdit для введення меж діапазону.
Той же TButton та TLabel для відображення результату.
Обробник події для натискання кнопки:
pascal
procedure TForm1.Button1Click(Sender: TObject);
var
numbers: array[0..4] of Integer = (1, 2, 3, 4, 5);
low, high, i: Integer;
resultString: String;
begin
low := StrToInt(Edit1.Text);
high := StrToInt(Edit2.Text);
resultString := '';
for i := 0 to High(numbers) do
begin
if (numbers[i] >= low) and (numbers[i] <= high) then
begin
resultString := resultString + IntToStr(numbers[i]) + ' ';
end;
end;
if resultString <> '' then
Label1.Caption := 'Числа в діапазоні: ' + Trim(resultString)
else
Label1.Caption := 'Не знайдено чисел у діапазоні';
end;