Старояпонский календарь - Pascal
Формулировка задачи:
старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зелёный, красный, жёлтый, белый и чёрный. Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, кота, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Например, 1984 – год зелёной крысы. Напишите программу, которая по некоторому номеру года выводит его название по старояпонскому стилю(используя перечесляемый тип и вложенный цикл).Как это реализовать ?
Решение задачи: «Старояпонский календарь»
textual
Листинг программы
type animal=(krs,krv,tgr,cat,drk,zmj,lsh,ovc,obz,pth,sbk,svn);
color=(grn,red,yel,wht,blk);
const zoo:array[0..11] of string=('й крысы','й коровы','го тигра','го кота',
'го дракона','й змеи','й лошади','й овцы',
'й обезьяны','го петуха','й собаки','й свиньи');
col:array[0..4] of string=('зелено','красно','желто','бело','черно');
var g,i,ia,ic:integer;
a:animal;
c:color;
begin
repeat
write('Введите номер года g>0 g=');
readln(g);
until g>0;
g:=g mod 60-4;
if g<0 then g:=g+60;
writeln('g=',g);
i:=-1;
for c:=grn to blk do
for a:=krs to svn do
begin
inc(i);
if i=g then
begin
ia:=ord(a);
ic:=ord(c);
end ;
end;
writeln('Это год ', col[ic],zoo[ia]);
end.
Объяснение кода листинга программы
- Объявляются типы перечислений:
animalс возможными значениямиkrs, krv, tgr, cat, drk, zmj, lsh, ovc, obz, pth, sbk, svncolorс возможными значениямиgrn, red, yel, wht, blk
- Объявляются константы:
zoo, массив строк, содержащий названия животных на русском языкеcol, массив строк, содержащий названия цветов на русском языке
- Объявляются переменные:
g,i,ia,icтипаintegeraтипаanimalcтипаcolor
- Запрашивается ввод числа
g, пока оно не будет больше 0. - Значение
gпреобразуется по формулеg:=g mod 60-4и, если результат меньше 0, прибавляется 60. - В цикле перебираются все возможные комбинации цветов и животных, и для каждой комбинации выполняется следующее:
- Увеличивается значения
i - Если
iравноg, значения переменныхiaиicприсваиваются соответствующим значениямaиc
- Увеличивается значения
- Выводится сообщение о том, что это за год, используя найденные значения
iaиicКак язык кода не указан, предположим, что это Pascal.