Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
didar1997
1 / 1 / 0
Регистрация: 24.10.2015
Сообщений: 22
1

Определить день недели, соответствующий заданной дате

04.02.2016, 12:46. Просмотров 1066. Ответов 5
Метки нет (Все метки)

Вам дана некоторая дата в 21веке. Определить день недели, соответствующии этой дате. Учтите, что 1 января 2016г - пятница. Количество дней в месяцах года равно соответственно: 31,28(29 для високосных лет),31,30,31,31,30,31,30,31. В 21 веке високосными считаются все годы, номера которых делятся на 4.
ФОРМАТ ВХОДНЫХ ДАННЫХ
Входной файл содержит 3 целых числа: D,M, Y - день, месяц и год. 1<=D31, 1<=M<=12, 2000<=Y<=2099. Дата правильная D не привышает числа дней в соответствующем месяце заданного года.
ФОРМАТ ВЫХОДНЫХ ДАННЫХ
В выходной файл выведите одно число - номер дня недели соответствующего заданной дате(дни недели нумеруются с 1 - понедельник)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2016, 12:46
Ответы с готовыми решениями:

Опредилить день недели, соответствующий заданной дате дате
вам дона некоторая дата 21 века,опредилите день недели, соответствующий этой...

Определить день недели по дате
01.01.1980 года вторник и этот год високосныи.программа должна определять день...

Известна дата и день недели некоторого события. Определить, на какой день недели приходится начало года
Известна дата и день недели некоторого события. Определить, на какой день...

По введенному числу от 1 до 7 назвать соответствующий числу день недели
Решить задачу с использованием оператора выбора. По введенному числу от 1 до 7...

Определить день недели по введенному дню
1 мая 2006 года – это день недели понедельник. Вводится любая дата месяца май....

5
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
04.02.2016, 13:05 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function WhatDay(Year: Integer; Month: Integer; Day: Integer):integer;
var
  a,y,m: integer;
begin
  a := (14 - Month) div 12;
  y := year - a;
  m := month + 12 * a - 2;
  WhatDay := (7000 + (day + y + y div 4 - y div 100 + y div 400 + (31 * m) div 12)) mod 7;
end;
 
var
  D, M, Y: Word;
begin
  Write('D: '); ReadLn(D);
  Write('M: '); ReadLn(M);
  Write('Y: '); ReadLn(Y);
  WriteLn('DOW: ',WhatDay(Y,M,D));
  ReadLn;
end.
1
JuriiMW
1992 / 1077 / 1573
Регистрация: 10.12.2014
Сообщений: 4,044
04.02.2016, 13:13 3
В PABC.NET будет вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses
  System;
begin
  var D, M, Y : Integer;
  ReadLn(D, M, Y);
  try
    var dt := new DateTime(Y, M, D);
    var dw := ord(dt.DayOfWeek);
    WriteLn( (dw = 0 ? 7 : dw) );
  except
    // если нужно что-то вывести когда неправильные данные
  end;
end.
Только ввод-вывод нужно перенаправить…


SpBerkut, в вопросе сказано:
Цитата Сообщение от didar1997 Посмотреть сообщение
дни недели нумеруются с 1 - понедельник

А что в вашем случае будет для 7.2.2016 ?


Ну и для 31.02.2016 выводит 3 ! Вот из ит?
2
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
04.02.2016, 13:17 4
Цитата Сообщение от JuriiMW Посмотреть сообщение
Ну и для 31.02.2016 выводит 3 ! Вот из ит?
Это 31 февраля, чо. Вы ещё 45 марта попробуйте — там вообще отрыв башки. Русским по серому писано, что даты корректны, родной.
1
JuriiMW
1992 / 1077 / 1573
Регистрация: 10.12.2014
Сообщений: 4,044
04.02.2016, 13:19 5
Цитата Сообщение от SpBerkut Посмотреть сообщение
Русским по серому писано,
А как на счёт:
Цитата Сообщение от didar1997 Посмотреть сообщение
дни недели нумеруются с 1
?
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
04.02.2016, 13:28 6
Лучший ответ Сообщение было отмечено didar1997 как решение

Решение

Цитата Сообщение от JuriiMW Посмотреть сообщение
А что в вашем случае будет для 7.2.2016 ?
А вот тут вы правы. Понадеялся на википедию. Быдлокодерское нутро требует дописать строку
Pascal
1
if WhatDay = 0 then WhatDay := 7
Естественно, через использование переменной, а не прямого обращения к имени функции.

Добавлено через 4 минуты
Как-то так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
function WhatDay(Year: Integer; Month: Integer; Day: Integer):integer;
var
  a,y,m,dow: integer;
begin
  a := (14 - Month) div 12;
  y := year - a;
  m := month + 12 * a - 2;
  dow := (7000 + (day + y + y div 4 - y div 100 + y div 400 + (31 * m) div 12)) mod 7;
  if dow = 0 then dow := 7;
  WhatDay := dow;
end;
0
04.02.2016, 13:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2016, 13:28

Определить день недели своего рождения
По введенной текущей дате (число, месяц и год), текущем дне недели, дате...

Определить день недели по введенному числу месяца
Прощу помощи у программистов ) Задача такая: Введите с клавиатуры число от...

по заданному количеству дней определить день недели
по заданному количеству дней определить день недели, если 1.01 - среда (Pascal ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru