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

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

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

> Григорианский календарь, Поиск дня недели...
Relrin
сообщение 16.12.2010 17:05
Сообщение #1


Пионер
**

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

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


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


Начало пока такое: (по мере понимания задачи, буду сюда скидывать более полностью решение):

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.


Я правильно указал типы? Заранее спасибо yes2.gif

Сообщение отредактировано: Relrin - 16.12.2010 17:05
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Relrin
сообщение 17.12.2010 22:06
Сообщение #2


Пионер
**

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

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


И всетаки решил вернутся к тому, чему хотел. Помогите сделать случай с уменьшением даты, до искомой даты, с учетом того, что с каждым сдвигом меняется день недели! mega_chok.gif
Например. Пускай сейчас... скажем какая-нибудь среда 2.1.1989 и искомое - 01.01.0001 года.
Первый сдвиг: 1.1.1989, вторник
Второй сдвиг: 31.12.1988, понедельник
Третий сдвиг: 30.12.1988, воскресенье
и так далее...


Uses
Crt;

Const
DayOfMonth: array[1..12] of integer=(31,28,31,30,31,30,30,31,30,31,30,31); {для обычных лет}
DayOfMonth2: array[1..12] of integer=(31,29,31,30,31,30,30,31,30,31,30,31); {для высокосных}

Type
NumbDay=:1..31;
Month=(January,February,March,April,May,June,July,August,
September,October,November,December);
DayOfWeek=(Monday,Tuesday,Wednesday,
Thursday,Friday,Saturday,Sunday);

Var
DoW,FDoW: DayOfWeek;
Day,TDay: NumbDays;
Mon,TMon: integer;
Year,TYear: integer;
a,i,j,k: integer;

Begin
clrscr;
{Ввод данных}
writeln('What day is it today?(dd mm yyyy)');
readln(TDay,a,TYear);
TMon:=Month(pred(a));
writeln;
writeln('1 - Monday, 2 - Tuesday, 3 - Wednesday ');
writeln('4 - Thursday, 5 - Friday, 6 - Saturday, 7 - Sunday');
writeln('Day of week(1 to 7): ');
readln(a);
DoW:=DayOfWeek(pred(a));
writeln;
writeln('Enter date, which you find: dd mm yyyy');
readln(Day,Mon,Year);
Mon:=Month(pred(a));
writeln;
{Поиск дня недели}
{Идея алгоритма - сдвигать дни, месяцы, года, до искомой даты, учитывая также дни недели, на которые приходятся датой}
{Сначала случай, когда указанный год больше искомого}
if TYear>Year then
begin
for i:=TYear downto Year do
begin
{Для высокосного года}
if (i mod 4=0) and (i mod 100<>0) and (i mod 400<>0) then
begin
// как тут дальше идти, т.к. нужно как-то ассоциировать, что в январе - 31 число, феврале 28/29 и т.д.
// + ко всему учитывать, что мы уменьшаем дату изначальную до искомой
end;
{для невысокосного года…}
else
end;
end;
writeln('Calendar day of the week ',Day,'.',a,'.',Year,' will 2');
readln;
End.




Сообщение отредактировано: Relrin - 17.12.2010 22:09
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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