Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 07:10   #1
IvanKyzyl
 
Регистрация: 14.02.2012
Сообщений: 4
Стрелка Задача по оператору case.

Нужна программа, которая по введённому году определит какому животному он соответствует. Например 2012 - год Дракона. Также нужно учесть что каждые 12 лет животные повторяются.

Работаю на FreePascal.
IvanKyzyl вне форума Ответить с цитированием
Старый 18.02.2012, 08:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
const god:array[1..12] of string=('Дракон','Тигрь','Крот','Мышка','Рыбка',
'Таракан','Жаба','Филин','Амеба','Пенницилин','Лошадка','Минотавр');
var i:integer;
begin
 i:=2016; Допустим это введенный год
 writeln('Сейчас год ',god[(i-2012) mod 12]); readln;
end.
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.02.2012, 08:16   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Виталик, две поправочки..

Первая - массив надо нумеровать не от 1 до 12, а от 0 до 11 (возможные результаты операции mod).
Код:
const god:array[0..11] of string=('Дракон','Тигрь','Крот','Мышка','Рыбка',
'Таракан','Жаба','Филин','Амеба','Пенницилин','Лошадка','Минотавр');
Второе - такой код будет неправильно работать (точнее, совсем не будет работать) с годами, меньшими 2012. Нужно сделать оффсет на какое-то количество циклов, типа так:
Код:
  writeln('Сейчас год ',god[(i-2012+12*1000) mod 12]); readln;
- тут есть запас на тысячу циклов в прошлое (12000 лет). На мой взгляд, такого запаса должно быть достаточно..

P.S.
Я по твоему гороскопу - рыбка )). Но было опасно близко к таракану, я аж спугнулси.. ))
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 20.02.2012, 23:05   #4
bonjovi
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 46
По умолчанию

эммм....... Вообще тема называется "Задача на оператор case" ! Всё можно сделать намного проще!



Код:
var a:integer;

Begin
Readln(a);
Case a mod 12 of
   0:Writeln('Обезьяна');
   1:Writeln('Петух');
   2:Writeln('Собака');
   3:Writeln('Свинья');
   4:Writeln('Крыса');
   5:Writeln('Бык');
   6:Writeln('Тигр');
   7:Writeln('Кролик');
   8:Writeln('Дракон');
   9:Writeln('Змея');
   10:Writeln('Лошадь');
   11:Writeln('Коза');
end
end.
bonjovi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по оператору for IvanKyzyl Паскаль, Turbo Pascal, PascalABC.NET 2 14.02.2012 09:11
Задача на case INFRON Общие вопросы Delphi 7 19.06.2011 12:12
задача с оператором case (Pascal) kena Помощь студентам 4 17.05.2009 12:54
Задача на case klop.92 Помощь студентам 4 28.04.2008 21:17