Перечисляемый тип - Turbo Pascal (29226)
Формулировка задачи:
Здравствуйте, есть список, существует ли возможность присваивать значения mes переменной a[i] не используя операторы case или if?
Листинг программы
- type
- data=record
- god:1900..3000;
- mes:(jan, fevr, mart, aprel);
- den:1..30;
- End;
- var
- i:integer;
- a:array [1..100] of data;
- begin
- i:=0;
- for i:=1 to 3 do
- begin
- begin
- writeln('год');
- readln(a[i].god);
- writeln('den');
- readln(a[i].den);
- a[i].mes:=data.aprel;//!!!!!!!!!как, или есть ли возможность,
- //не используя саse, if доставать соответстующие значения i при (i=1 - janv
- //i=2 - fevr, i=3 - mart??)
- end;
- end;
- for i:=1 to 3 do
- begin
- writeln('год=',a[i].god,' День=',a[i].den,' mes=',a[i].mes)
- end;
- end.
Решение задачи: «Перечисляемый тип»
textual
Листинг программы
- type mesjaz = (jan, fevr, mart, apr, mai, ijun, ijul, avg, sent, okt, noj, dek);
- type
- data=record
- god:1900..3000;
- mes:mesjaz;
- den:1..30;
- End;
- var
- i,t:integer;
- a:array [1..100] of data;
- begin
- i:=0;
- for i:=1 to 3 do
- begin
- begin
- write('год: ');
- readln(a[i].god);
- write('den: ');
- readln(a[i].den);
- write('mes: ');
- readln(t); //t in [1..12]
- a[i].mes:=mesjaz(t-1); //ord(mesaz) in [0..11]
- end;
- end;
- for i:=1 to 3 do
- begin
- writeln('год=',a[i].god,' День=',a[i].den,' mes=',a[i].mes)
- end;
- readln
- end.
Объяснение кода листинга программы
- Создается перечисленый тип
mesjaz
, который содержит 12 элементов, представляющих месяцы года. - Создается тип данных
data
с полямиgod
(год),mes
(месяц) иden
(день). - Создается переменная
i
типаinteger
для индексации массива данных. - Создается переменная
t
типаinteger
для хранения номера месяца. - Создается массив
a
типаarray
с размером 100 элементов, каждый из которых является объектом типаdata
. - Задается начальное значение переменной
i
равным 0. - Запускается цикл
for
, который выполняется 3 раза. - Внутри цикла создается вложенный блок
begin
для каждого месяца. - Внутри вложенного блока
begin
выполняются следующие действия:- Выводится запрос на ввод года.
- Год сохраняется в поле
god
объекта типаdata
. - Выводится запрос на ввод дня месяца.
- День сохраняется в поле
den
объекта типаdata
. - Выводится запрос на ввод месяца.
- Месяц сохраняется в поле
mes
объекта типаdata
. - Значение месяца преобразуется в соответствующий номер месяца.
- После завершения вложенного блока
begin
выводится сообщение о годе, дне и месяце. - Цикл
for
завершается. - Выводится сообщение с информацией о каждом объекте типа
data
в массивеa
. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д