IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> знаки Зодиака, задачка
ve7er
сообщение 14.05.2007 20:39
Сообщение #1


Разведчик
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Диман

Репутация: -  0  +


Люди посоветуйте как решить задачку:

Известно, что астрологи делят год на 12 периодов и каждому из них ставят в соответствии один из знаков Зодиака. Напишите программу для ввода даты некоторого дня года и печати названия соответствующего знака Зодиака.
Водолей 20,01-18,02
Рыбы 19,02-20,03
Овен 21,03-19,04
Телец 20,04-20,05
Близнеца 21,05-21,06
Рак 22,06-22,07
Лев 23,07-22,08
Дева 23,08-22,09
Весы 23,09-22,10
Скорпион 23,10-22,11
Стрелец 23,11-21,12
Козерог 22,12-19,01

Я её короче сделал используя только if... then writeln... при этом рассчитав какой дате соответствует какой день года:
Знак зодиака---> Период---> Промежутки дней года
Водолей---> 20,01-18,02---> 20-49
Рыбы---> 19,02-20,03---> 50-79
Овен---> 21,03-19,04---> 80-109
Телец---> 20,04-20,05---> 110-140
Близнеца---> 21,05-21,06---> 141-172
Рак---> 22,06-22,07---> 173-203
Лев---> 23,07-22,08---> 204-234
Дева---> 23,08-22,09---> 235-265
Весы---> 23,09-22,10---> 266-295
Скорпион---> 23,10-22,11---> 296-326
Стрелец---> 23,11-21,12---> 327-355
Козерог---> 22,12-19,01---> 356-365-19
Все короче работает, но мою очаровательную преподавательницу это не устроило...

Сообщение отредактировано: ve7er - 14.05.2007 20:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
volvo
сообщение 14.05.2007 21:15
Сообщение #2


Гость






Твою очаровательную преподавательницу устроит такой вариант?

Сохраняем все данные в виде типизированных констант:
type
zodiak_names = (vodoley, ... ); { <--- перечисляешь названия всех знаков задиака }
tdata = record
day: integer;
month: integer;
end;

trange = record
start, finish: tdata;
end;

const
zodiak: array[zodiak_names] of trange = (
(start: (day: 20; month: 1); finish: (day: 18; month: 2)),
... { <--- и так далее, все знаки зодиака }
);

{ а потом пишем функцию, которая проверяет попадание даты в trange }
function in_range(const d: tdata; const rng: trange): boolean;
begin
...
end;

var i: zodiak_names;

{ и после ввода даты the_data ... }
for i := low(zodiak_names) to high(zodiak_names) do
if in_range(the_data, zodiak[i]) then begin
{ вывод сообщения, что это - нужный знак зодиака }
break;
end;


или это ее тоже не устроит?
 К началу страницы 
+ Ответить 
ve7er
сообщение 15.05.2007 20:17
Сообщение #3


Разведчик
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Диман

Репутация: -  0  +


Ну что могу сказать, красавица нашего института не прыгала от счастья. Ну чита я не допру эту прогу до победного конца. У меня бесконечные ошибки с типами. Пришлось даже запыленные книжки по Паскалю доставать.

........__|__
___ / **** \=======#
;|HH*T-34*HH:\
(@=@=@=@=@) Короче один в поле не воин. Help me!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 17:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"