Проверить, есть ли в группе хотя бы два человека одного роста и вывести их имена - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу, использующую логическую функцию rost(gr), проверяющую, есть ли в группе gr хотя бы два человека одного роста и вывести их имена

Решение задачи: «Проверить, есть ли в группе хотя бы два человека одного роста и вывести их имена»

textual
Листинг программы
  1. {$MODE TP}
  2. type
  3.     TMan = record
  4.         name: String;
  5.         height: Byte;
  6.     end;
  7.     TArray = Array[Byte] Of TMan;
  8.     TGroup = record
  9.         ar: TArray;
  10.         n: Byte;
  11.     end;
  12. function SameHeigth(const gr: TGroup): Boolean;
  13. var
  14.     Result: Boolean;
  15.     i, j: Byte;
  16. begin
  17.     with gr do
  18.     begin
  19.         Result := (n < 2);
  20.         if (Not Result)
  21.         then
  22.         begin
  23.             i := 0;
  24.             while ((i < n - 1) And (Not Result)) do
  25.             begin
  26.                 j := i + 1;
  27.                 while ((j < n) And (Not Result)) do
  28.                 begin
  29.                     Result := (ar[i].height = ar[j].height);
  30.                     if (Result)
  31.                     then
  32.                         WriteLn(ar[i].name, ' & ', ar[j].name);
  33.                     Inc(j);
  34.                 end;
  35.                 Inc(i);
  36.             end;
  37.         end;
  38.     end;
  39.     SameHeigth := Result;
  40. end;
  41. var
  42.     gr: TGroup;
  43.     i: Byte;
  44. begin
  45.     with gr do
  46.     begin
  47.         repeat
  48.             Write('Сколько человек в группе? ');
  49.             ReadLn(n);
  50.         until (n > 0);
  51.         for i := 0 to n - 1 do
  52.             with ar[i] do
  53.             begin
  54.                 Write('Введите имя: '); ReadLn(name);
  55.                 Write('Введите рост: '); ReadLn(height);
  56.             end;
  57.     end;
  58.     if (Not SameHeigth(gr))
  59.     then
  60.         Write('Нет людей с одинаковым ростом');
  61. end.

Объяснение кода листинга программы

  1. Создается тип данных TMan, который представляет собой запись с двумя полями: name (имя) и height (рост).
  2. Создается массив TArray, который представляет собой массив записей типа TMan.
  3. Создается тип данных TGroup, который представляет собой запись с двумя полями: ar (массив TArray), n (количество элементов в массиве TArray).
  4. Определяется функция SameHeigth, которая принимает объект типа TGroup в качестве аргумента и возвращает логическое значение true, если в группе есть хотя бы два человека одного роста, и false в противном случае.
  5. Внутри функции используется цикл while для проверки каждого элемента массива TArray на равенство его высоты с высотой следующего элемента. Если условие выполняется, то выводится имя текущего и следующего элемента, а затем увеличивается значение переменной j. Если условие не выполняется, то увеличивается значение переменной i.
  6. После завершения цикла while выводится сообщение о том, есть ли в группе люди с одинаковым ростом.
  7. Создается объект типа TGroup с помощью оператора with и заполняются его поля.
  8. Выполняется цикл for для каждого элемента массива TArray.
  9. Внутри цикла for считываются имена и росты каждого элемента массива TArray с помощью функций Write и ReadLn.
  10. После завершения цикла for выводится сообщение о том, сколько человек в группе и какие именно люди в ней находятся.
  11. Если функция SameHeigth возвращает false, то выводится сообщение о том, что в группе нет людей с одинаковым ростом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы