Показать сообщение отдельно
Старый 20.12.2008, 22:26   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Не знаю, сколь это Вам поможет, но когда-то я сделал для себя такую программку, она тщательно выверена и абсолютно рабочая. Есть отличия:

1. У Вас зеленый цвет, у меня - синий.
2. Помимо цветов, выводятся стихии (огонь, вода и т.п.).
3. В задаче перебор цветов (стихий) задан неправильно. На самом деле в восточном календаре цвет (стихия) не меняется в течение двух лет подряд.
4. За базовый принят не 1984, а год, номер которого кратен 60. Так удобнее.
5. В исходной программе учитываются годы до Н.Э. (легко убрать).

Текст программы:

{ Это для перевода текущего года в восточную символику }
CONST
Matter_Color:ARRAY[0..9] of STRING[16]=('Металл Белый ',
'Металл Белый ',
'Вода Черный ',
'Вода Черный ',
'Дерево Синий ',
'Дерево Синий ',
'Огонь Красный',
'Огонь Красный',
'Земля Желтый ',
'Земля Желтый ');

Animal:ARRAY[0..11] of STRING[8]=('Обезьяна',
'Курица ',
'Пес ',
'Свинья ',
'Мышь ',
'Корова ',
'Тигр ',
'Заяц ',
'Дракон ',
'Змея ',
'Конь ',
'Овца ');

VAR
CurYear, Mod1, Mod2, Mod3:Integer;

BEGIN
WRITELN('Годы до Н.Э. вводите со знаком "-";');
WRITELN('для выхода из программы введите нулевой год.');
WRITELN;
REPEAT
WRITE('Введите год: '); READLN(CurYear);
IF CurYear<>0 THEN
BEGIN
IF CurYear<0 THEN Mod1:=61+(CurYear mod 60) ELSE
Mod1:=CurYear mod 60;
Mod2:=Mod1 mod 10;
Mod3:=Mod1 mod 12;
IF CurYear<0 THEN
WRITELN(CurYear*(-1):8,' до Н.Э. ',Animal[Mod3],' ',
Matter_Color[Mod2])
ELSE
WRITELN(CurYear:8,' Н.Э. ',Animal[Mod3],' ',
Matter_Color[Mod2]);
END;
UNTIL CurYear=0;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070