Case20. Даны два целых числа: $$D$$ (день) и $$M$$ (месяц), определяющие правильную дату. Вывести знак Зодиака, соответствующий этой дате: «Водолей» (20.1–18.2), «Рыбы» (19.2–20.3), «Овен» (21.3–19.4), «Телец» (20.4–20.5), «Близнецы» (21.5–21.6), «Рак» (22.6–22.7), «Лев» (23.7–22.8), «Дева» (23.8–22.9), «Весы» (23.9–22.10), «Скорпион» (23.10–22.11), «Стрелец» (23.11–21.12), «Козерог» (22.12–19.1).
Решение:
Описывать календарь с помощью Case вычисляя отдельно дни и месяцы довольно сложная задача, поэтому упростим себе жизнь. Сольём месяцы и дни в одно число. Так как кол-во дней двузначное число и кол-во месяцев двузначное число. Представим месяцы как сотни, а дни как единицы и десятки. У нас получится число в формате MMDD и колеблющаеся в диапозоне от 0101(первое января) до 1231(31 декабря).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
program Case20; var D,M:Integer; begin Write('Введите День: '); Readln(D); Write('Введите Месяц: '); Readln(M); case M*100+D of 0120..0218:Writeln('Водолей'); 0219..0320:Writeln('Рыбы'); 0321..0419:Writeln('Овен'); 0420..0520:Writeln('Телец'); 0521..0621:Writeln('Близнецы'); 0622..0722:Writeln('Рак'); 0723..0822:Writeln('Лев'); 0823..0922:Writeln('Дева'); 0923..1022:Writeln('Весы'); 1023..1122:Writeln('Скорпион'); 1123..1221:Writeln('Стрелец'); 1222..1231,0101..0119:Writeln('Козерог'); end; end. |
Решение от olegst1975:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Program Case20; var d, m:integer; begin read(d); read(m); case m of 1: if d>19 then write('Водолей') else write('Козерог'); 2: if d>18 then write('Рыбы') else write('Водолей'); 3: if d>20 then write('Овен') else write('Рыбы'); 4: if d>19 then write('Телец') else write('Овен'); 5: if d>20 then write('Близнецы') else write('Телец'); 6: if d>21 then write('Рак') else write('Близнецы'); 7: if d>22 then write('Лев') else write('Рак'); 8: if d>22 then write('Дева') else write('Лев'); 9: if d>22 then write('Весы') else write('Дева'); 10: if d>22 then write('Скорпион') else write('Весы'); 11: if d>22 then write('Стрелец') else write('Скорпион'); 12: if d>21 then write('Козерог') else write('Стрелец'); end; end. |
Другие задачи из раздела Case можно посмотреть здесь.
слушай, офигенно ))) просто и элементарно
я старался 🙂
Хорошая идея. Мое решение «в лоб»
[/crayon]
Спасибо за лестный отзыв.
К сожалению ваше решение похоже не до конца вставилось. Если не сложно попробуйте в коментарии текст кода вставить между тегами < p r e > < / p r e >. (теги писать без проблеов)