Проверить, есть ли в группе хотя бы два человека одного роста и вывести их имена - Turbo Pascal
Формулировка задачи:
Написать программу, использующую логическую функцию rost(gr), проверяющую, есть ли в группе gr хотя бы два человека одного роста и вывести их имена
Решение задачи: «Проверить, есть ли в группе хотя бы два человека одного роста и вывести их имена»
textual
Листинг программы
{$MODE TP}
type
TMan = record
name: String;
height: Byte;
end;
TArray = Array[Byte] Of TMan;
TGroup = record
ar: TArray;
n: Byte;
end;
function SameHeigth(const gr: TGroup): Boolean;
var
Result: Boolean;
i, j: Byte;
begin
with gr do
begin
Result := (n < 2);
if (Not Result)
then
begin
i := 0;
while ((i < n - 1) And (Not Result)) do
begin
j := i + 1;
while ((j < n) And (Not Result)) do
begin
Result := (ar[i].height = ar[j].height);
if (Result)
then
WriteLn(ar[i].name, ' & ', ar[j].name);
Inc(j);
end;
Inc(i);
end;
end;
end;
SameHeigth := Result;
end;
var
gr: TGroup;
i: Byte;
begin
with gr do
begin
repeat
Write('Сколько человек в группе? ');
ReadLn(n);
until (n > 0);
for i := 0 to n - 1 do
with ar[i] do
begin
Write('Введите имя: '); ReadLn(name);
Write('Введите рост: '); ReadLn(height);
end;
end;
if (Not SameHeigth(gr))
then
Write('Нет людей с одинаковым ростом');
end.
Объяснение кода листинга программы
- Создается тип данных TMan, который представляет собой запись с двумя полями: name (имя) и height (рост).
- Создается массив TArray, который представляет собой массив записей типа TMan.
- Создается тип данных TGroup, который представляет собой запись с двумя полями: ar (массив TArray), n (количество элементов в массиве TArray).
- Определяется функция SameHeigth, которая принимает объект типа TGroup в качестве аргумента и возвращает логическое значение true, если в группе есть хотя бы два человека одного роста, и false в противном случае.
- Внутри функции используется цикл while для проверки каждого элемента массива TArray на равенство его высоты с высотой следующего элемента. Если условие выполняется, то выводится имя текущего и следующего элемента, а затем увеличивается значение переменной j. Если условие не выполняется, то увеличивается значение переменной i.
- После завершения цикла while выводится сообщение о том, есть ли в группе люди с одинаковым ростом.
- Создается объект типа TGroup с помощью оператора with и заполняются его поля.
- Выполняется цикл for для каждого элемента массива TArray.
- Внутри цикла for считываются имена и росты каждого элемента массива TArray с помощью функций Write и ReadLn.
- После завершения цикла for выводится сообщение о том, сколько человек в группе и какие именно люди в ней находятся.
- Если функция SameHeigth возвращает false, то выводится сообщение о том, что в группе нет людей с одинаковым ростом.