Перечисляемый тип - Turbo Pascal (29226)

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

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

Здравствуйте, есть список, существует ли возможность присваивать значения mes переменной a[i] не используя операторы case или if?
Листинг программы
  1. type
  2. data=record
  3. god:1900..3000;
  4. mes:(jan, fevr, mart, aprel);
  5. den:1..30;
  6. End;
  7. var
  8. i:integer;
  9. a:array [1..100] of data;
  10. begin
  11. i:=0;
  12. for i:=1 to 3 do
  13. begin
  14. begin
  15. writeln('год');
  16. readln(a[i].god);
  17. writeln('den');
  18. readln(a[i].den);
  19. a[i].mes:=data.aprel;//!!!!!!!!!как, или есть ли возможность,
  20. //не используя саse, if доставать соответстующие значения i при (i=1 - janv
  21. //i=2 - fevr, i=3 - mart??)
  22. end;
  23. end;
  24. for i:=1 to 3 do
  25. begin
  26. writeln('год=',a[i].god,' День=',a[i].den,' mes=',a[i].mes)
  27. end;
  28. end.

Решение задачи: «Перечисляемый тип»

textual
Листинг программы
  1. type mesjaz = (jan, fevr, mart, apr, mai, ijun, ijul, avg, sent, okt, noj, dek);
  2. type
  3. data=record
  4. god:1900..3000;
  5. mes:mesjaz;
  6. den:1..30;
  7. End;
  8. var
  9. i,t:integer;
  10.  
  11. a:array [1..100] of data;
  12.  
  13. begin
  14. i:=0;
  15. for i:=1 to 3 do
  16.     begin
  17.     begin
  18.     write('год: ');
  19.     readln(a[i].god);
  20.     write('den: ');
  21.     readln(a[i].den);
  22.     write('mes: ');
  23.     readln(t); //t in [1..12]
  24.     a[i].mes:=mesjaz(t-1); //ord(mesaz) in [0..11]
  25.     end;
  26.   end;
  27. for i:=1 to 3 do
  28.   begin
  29.   writeln('год=',a[i].god,' День=',a[i].den,' mes=',a[i].mes)
  30.   end;
  31. readln
  32. end.

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

  1. Создается перечисленый тип mesjaz, который содержит 12 элементов, представляющих месяцы года.
  2. Создается тип данных data с полями god (год), mes (месяц) и den (день).
  3. Создается переменная i типа integer для индексации массива данных.
  4. Создается переменная t типа integer для хранения номера месяца.
  5. Создается массив a типа array с размером 100 элементов, каждый из которых является объектом типа data.
  6. Задается начальное значение переменной i равным 0.
  7. Запускается цикл for, который выполняется 3 раза.
  8. Внутри цикла создается вложенный блок begin для каждого месяца.
  9. Внутри вложенного блока begin выполняются следующие действия:
    • Выводится запрос на ввод года.
    • Год сохраняется в поле god объекта типа data.
    • Выводится запрос на ввод дня месяца.
    • День сохраняется в поле den объекта типа data.
    • Выводится запрос на ввод месяца.
    • Месяц сохраняется в поле mes объекта типа data.
    • Значение месяца преобразуется в соответствующий номер месяца.
  10. После завершения вложенного блока begin выводится сообщение о годе, дне и месяце.
  11. Цикл for завершается.
  12. Выводится сообщение с информацией о каждом объекте типа data в массиве a.
  13. Программа завершается.

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


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

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

6   голосов , оценка 3.667 из 5

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

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

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