Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 16.06.2009, 20:59   #1 (permalink)
pavel90
Новичок
 
Регистрация: 16.06.2009
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите сделать программу в паскале!

короче,нужно сделать программу "календарь".
смысл в том,чтобы программа определяла день недели введенной даты.вот
pavel90 вне форума   Ответить с цитированием

Старый 16.06.2009, 20:59
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Просмотр похожих постов всегда хорошо помогает в решении проблем

Помогите доработать программу на Паскале
Помогите составить программу на Паскале
Помогите создать программу на турбо Паскале

Старый 16.06.2009, 22:36   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pavel90 Посмотреть сообщение
короче,нужно сделать программу "календарь".
смысл в том,чтобы программа определяла день недели введенной даты.вот
Пожалуйста:

CONST
DinM:ARRAY[1..12] of BYTE=(31,28,31,30,31,30,31,31,30,31,30,31);
VAR
N,M,p0,p1,p2,p3,D,i:INTEGER;
Full_Number_of_Days:LongInt;
Bis:BOOLEAN;
DofWeek:STRING;

BEGIN
Write('Enter the year '); Readln(N);
IF (((N mod 4)=0) AND ((N mod 100)>0)) OR
(((N mod 4)=0) AND ((N mod 100)=0) AND ((N mod 400)=0)) THEN
Bis:=TRUE ELSE Bis:=FALSE;
p0:=((N-1) div 400)-(1900 div 400);
p1:=((N-1) div 100)-(1900 div 100);
p2:=((N-1) div 4)-(1990 div 4);
Full_Number_of_Days:=((N-1)-1900)*365+p2-p1+p0;
Write('Enter the month (1,2...12) '); Readln(M);
FOR i:=1 TO M-1 DO
Full_Number_of_Days:=Full_Number_of_Days+DinM[i];
IF Bis AND ((M-1)>=2) THEN
Full_Number_of_Days:=Full_Number_of_Days+1;
Write('Enter the date (1,2...31) '); Readln(D);
Full_Number_of_Days:=Full_Number_of_Days+D;
p3:=Full_Number_of_Days mod 7;
CASE p3 OF
6: DofWeek:='Monday';
0: DofWeek:='Tuesday';
1: DofWeek:='Wednesday';
2: DofWeek:='Thursday';
3: DofWeek:='Friday';
4: DofWeek:='Saturday';
5: DofWeek:='Sunday';
END;
IF M<10 THEN
WriteLn(D:2,'.0',M:1,'.',N:4,' is '+DofWeek) ELSE
WriteLn(D:2,'.',M:2,'.',N:4,' is '+DofWeek);
ReadLn;
END.

Работает для дат после 1 января 1901 года. Календарь считается Григорианским даже для дореволюционных лет.

Последний раз редактировалось Vladimir_S; 16.06.2009 в 23:04 Причина: Была замечена неточность. Исправлена.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:48.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.