Возвращение функцией множества - Turbo Pascal

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

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

Всем привет, есть программа написанная на паскальабс и прекрасно там работающая. Но при переносе ее в турбо паскаль, множество set возвращаемое функцией vvod не хочет определяться. А теперь вопрос: Как вернуть множество из функции в турбо паскале? Текст проги в паскальабс - кому интересно вводит 3 множества х1, х2, х3 мощностью 10(элементов), затем по формуле yy находится множество y, апасля из y вынимается еще одно множество четных чисел:
Листинг программы
  1. program mnogestva;
  2. Uses Crt; //грузим модуль
  3. var
  4. x1, x2, x3, y: set of 1..100;//объявили три множества содержащие целые числа из диапазона 1..100
  5. //--------------------функция ввода значений множества------------------------------------
  6. function vvod(): set of integer;
  7. var
  8. mn: set of 1..100; //создаем множество из диапазона 1..100
  9. b, i: integer;//описываем вспомогательные элементы
  10. begin
  11. mn := []; //создаем пустое множесто
  12. i := 0;
  13. writeln('Введите значения элементов исходных множеств x1, x2, x3');
  14. repeat//цикл ввода элементов для множества
  15. read(b); //вводим значение элемета
  16. {определяем входит элемент в множество}
  17. if b in mn then
  18. begin
  19. writeln('Tакой элемент уже есть, введите еще раз');
  20. continue;
  21. end;
  22. mn += [b]; //добавляем элемент множеству
  23. i += 1;
  24. until i >= 10; //когда мощность равена 10 выходим из цикла
  25. vvod := mn; //возвращаем множество с мощность=10
  26. end;
  27. //-----------------функция формирования нового множества----------------------------
  28. function yyy(xx1, xx2, xx3: set of integer): set of integer;
  29. begin
  30. yyy := (xx1 + xx2) - (xx2 * xx3);
  31. end;
  32. //-----------------процедура подсчета подмножества четных чисел и его мощности--------
  33. procedure chet(yy: set of integer);
  34. var
  35. b: integer;
  36. mn: set of 1..100;
  37. i: integer;
  38. begin
  39. mn := []; i := 0;
  40. foreach b in yy do //цикл перебора всех элементов множества Y
  41. begin
  42. if (b mod 2) = 0 then //если четно
  43. begin
  44. mn += [b]; //пишев в множество
  45. i += 1; //считаем мощность
  46. end;
  47. end;
  48. writeln('Подмножество четных чисел=', mn, ', его мощность =', i); //выводим результат
  49. end;
  50. //-----------------основная программа------------------------------------------------
  51. begin
  52. Clrscr;
  53. TextBackground(1);
  54. {вводим множества x1, х2, х3}
  55. x1 := vvod();
  56. x2 := vvod();
  57. x3 := vvod();
  58. {выводим множества х1, х2, х3}
  59. writeln('x1=', x1);
  60. writeln('x2=', x2);
  61. writeln('x3=', x3);
  62. {формируем новое множество у и выводим на экран}
  63. y := yyy(x1, x2, x3);
  64. writeln('y=', y);
  65. {процедура выделения из множества "у" подмножества четных чисел и подсчет его мощности}
  66. chet(y);
  67. ReadKey;
  68. end.

Решение задачи: «Возвращение функцией множества»

textual
Листинг программы
  1. type
  2.   TRange = 1..100;
  3.   TSet = set of TRange;
  4. procedure vvod(var s: TSet);
  5. var e: TRange; n: Integer;
  6. begin
  7.   s:=[]; n:=0;
  8.   while n<=10 do begin
  9.     Read(e);
  10.     if not (e in s) then begin
  11.       Include(s,e); Inc(n);
  12.     end;
  13.   end;
  14. end;

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

  1. В начале объявляются типы данных TRange и TSet.
  2. Затем объявляется процедура vvod, которая принимает в качестве параметра переменную s типа TSet.
  3. Внутри процедуры объявляются две переменные e и n типа TRange и Integer соответственно.
  4. Затем идет цикл while, который выполняется до тех пор, пока значение переменной n не превысит 10.
  5. Внутри цикла считывается значение переменной e с помощью функции Read.
  6. Затем проверяется, содержится ли значение переменной e в множестве s с помощью оператора in.
  7. Если значение e не содержится в множестве s, то оно добавляется в множество с помощью функции Include.
  8. После этого увеличивается значение переменной n на единицу с помощью функции Inc.
  9. Цикл while повторяется до тех пор, пока значение переменной n не превысит 10.
  10. По завершении цикла значение переменной s будет содержать все уникальные значения из входного множества.

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


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

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

8   голосов , оценка 4.125 из 5

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

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

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