• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

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

  • Автор темы Автор темы pavel90
  • Дата начала Дата начала

pavel90

Ученик
Регистрация
16 Июн 2009
Сообщения
1
Реакции
0
Баллы
0
Помогите сделать программу в паскале!

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

Пожалуйста:

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;
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 года. Календарь считается Григорианским даже для дореволюционных лет.
 
Последнее редактирование:
Назад
Сверху