![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Relrin |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 64 Пол: Мужской Репутация: ![]() ![]() ![]() |
Условие задачи: Необходимо ввести день, число и год. Определить день недели, приходящийся на этот день, месяц, год. При решении задачи использовать типы.
Начал решать задачу и возник следующий вопрос: как можно введя только нужную дату, определить день недели, приходящийся на этот день месяца и год? Начало пока такое: (по мере понимания задачи, буду сюда скидывать более полностью решение):
Uses
crt;
Type
NumbDays=1..31;
Month=(January,February,March,April,May,
June,July,August,September,October,
November,December);
DayOfWeek=(Monday,Tuesday,Wednesday,
Thursday,Friday,Saturday,Sunday);
Var
Day: NumbDays;
Mon: Month;
Year: integer;
i,j,k: integer;
Begin
clrscr;
writeln('Enter Day of Month(from 1 to 31): ');
readln(Day);
writeln('Enter Month(from 1 to 12): ');
readln(Mon);
writeln('Enter Year: ');
readln(Year);
{тут будет вычисление происходить нужного дня, но алгоритма решения пока не знаю}
readln;
End.
Я правильно указал типы? Заранее спасибо ![]() Сообщение отредактировано: Relrin - 16.12.2010 17:05 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Как введи скажем число 10 - и обратившись к типу, получить октябрь? var
m: integer;
// ...
readln(m);
TMon := Month(Pred(m)); { <--- Pred - потому что перечисление в типах начинается с 0 }
, но я бы еще проверял, не ввел ли пользователь число меньше 1 или больше 12, иначе будет ошибка. Остальные вопросы по приведению типов решаются аналогично. Цитата Как обходиться с количеством дней в месяцах? Создать массив:Const
DayOfMonth: array[Month] of NumbDays = (31, 28, 31, 30, 31, 30, 30, 31, 30, 31, 30, 31);
А вот с февралем у тебя проблемы. Без формул определить, в каком феврале 28 а в каком 29 дней - вряд ли получится...Цитата Как проходится по месяцам и дням в обе стороны? Через Succ и Pred? Да. Но не забывать проверять граничные значения, иначе при Succ(December) у тебя будут проблемы, равно как и при Pred(January). Кстати, циклы var M: Month;
begin
for M := low(Month) to high(Month) do { ... }
end.
Работают безо всяких Pred/Succ ...Цитата Возможно ли преобразовать тип строк (Month, DayOfWeek)? Аналогично:const
StrMonth: array[Month] of string = ('January','February','March','April','May',
'June','July','August','September','October','November','December');
... |
![]() ![]() |
![]() |
Текстовая версия | 8.08.2025 10:07 |