Еще в свое время для себя сделал программку по восточному календарю. Сейчас малость "причесал": убрал кириллицу (DOS) и годы до н.э. (у меня учитываются и такие). К сожалению, опять же Паскаль.
Код:
CONST
Matter_Color:ARRAY[0..9] of STRING[16]=('Metal White ',
'Metal White ',
'Water Black ',
'Water Black ',
'Wood Blue ',
'Wood Blue ',
'Fire Red ',
'Fire Red ',
'Earth Yellow',
'Earth Yellow');
Animal:ARRAY[0..11] of STRING[8]=('Monkey',
'Hen ',
'Dog ',
'Swine ',
'Mouse ',
'Cow ',
'Tiger ',
'Rabbit',
'Dragon',
'Snake ',
'Horse ',
'Sheep ');
VAR
CurYear, Mod1, Mod2, Mod3:LongInt;
BEGIN
WRITELN('Enter zero year to exit');
WRITELN;
REPEAT
WRITE('Enter the year: '); READLN(CurYear);
IF CurYear>0 THEN
BEGIN
Mod1:=CurYear mod 60;
Mod2:=Mod1 mod 10;
Mod3:=Mod1 mod 12;
WRITELN(CurYear:8,' ',Animal[Mod3],' ',Matter_Color[Mod2]);
END;
UNTIL CurYear=0;
END.
Может быть, пригодится.