1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192

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

04.12.2017, 19:53. Показов 2797. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Известна дата и день недели некоторого события. Определить на какой день недели приходится начало года. Использовать множества и не использовать стандартные фукнции!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2017, 19:53
Ответы с готовыми решениями:

Определить на какой день недели приходится начало года
Здравствуйте! Задача на использование комбинированного и множественного типа. Условие: "Известна дата и день недели некоторого...

Определить, на какой день недели приходится k-й день невисокосного года
Пусть k – целое от 1 до 365. Присвоить целой переменной n значение 1,2,…6 или 7 в зависимости от того, на какой день недели ( понедельник,...

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

6
 Аватар для JuriiMW
5096 / 2662 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
05.12.2017, 07:07
Судя по вашему предыдущему вопросу, мы теперь боимся и предположить, какие такие „стандартные фукнции“ вам запрещено использовать…
Да и не понятна цель использования множества в чисто математической задачке?
1
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
05.12.2017, 18:15  [ТС]
Есть программа которая работает так: мы вводим день недели который 1 января и некоторую дату. А программа выводит день недели этой даты.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const ms:array[1..12] of integer=(31,28,31,30,31,30,31,31,30,31,30,31);
var
  d,m,i,wd1:integer;
begin
  repeat
    write('День недели=:');
    readln(wd1);
  until wd1 in [1..7];  
  repeat
    write('День=');    readln(d);
    write('Месяц=');    readln(m);
  until (m>0) and (m<13) and (d<=ms[m]);  
  for i:=1 to m-1 do d:=d+ms[i];
  case (d-wd1-1) mod 7 of
    0:writeln('воскресенье');
    1:writeln('понедельник');
    2:writeln('вторник');
    3:writeln('среда');
    4:writeln('четверг');
    5:writeln('пятница');
    6:writeln('суббота');
  end;
 end.
Как переделать что бы мы вводили день недели даты а программа выводила день недели 1 января?
0
 Аватар для JuriiMW
5096 / 2662 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
06.12.2017, 07:33
Ну и где же здесь множества?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function daysInMonth(y, m : Integer) : Integer;
begin
  case m of
    1, 3, 5, 7, 8, 10, 12 : daysInMonth := 31;
    4, 6, 9, 11 : daysInMonth := 30;
  else // m = 2
    if y mod 100 = 0 then
      if y mod 400 = 0 then daysInMonth := 29 else daysInMonth := 28
    else
      if y mod 4 = 0 then daysInMonth := 29 else daysInMonth := 28;
  end;
end;
 
const sdw : array [0..6] of String[11] = ('воскресенье','суббота','пятница','четверг','среда','вторник','понедельник');
var
  d, m, y, dw : Integer;
begin
  WriteLn('День месяца, номер месяца, номер года, номер дня недели');
  ReadLn(d, m, y, dw);
  if (d < 1) or (m < 1) or (m > 12) or (y < 1900) or (y > 2100) or (dw < 1) or (dw > 7) or (d > daysInMonth(y, m)) then
    begin
      WriteLn('Неверные данные...'); Halt;
    end;
  while m > 1 do
    begin
      Dec(m);
      Inc(d, daysInMonth(y, m));
    end;
  dw := (7 + (d - 1) mod 7 - dw) mod 7;
  WriteLn(sdw[dw]);
end.
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
06.12.2017, 18:33  [ТС]
JuriiMW, а у вас где множества? я в свою добавил множество
0
 Аватар для JuriiMW
5096 / 2662 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
07.12.2017, 06:48
Цитата Сообщение от JuriiMW Посмотреть сообщение
Ну и где же здесь множества?
Это относилось к вашему коду!

В моём коде они тоже не используются, ибо про это я уже спрашивал ранее:
Цитата Сообщение от JuriiMW Посмотреть сообщение
Да и не понятна цель использования множества в чисто математической задачке?
Если вы считаете за использование множества „in [1..7]“, то да! Вы это сделали!
Хотя это использованием можно назвать с натяжкой…
Использование это когда над множеством выполняются какие-то действия.
А тут что? Только сравнение диапазона. Да и то не подходит для всех значений. К примеру для года его нельзя применить.

В моей программе можно тоже можно поменять условие:

Pascal
20
if Not(m in [1..12]) or (y < 1900) or (y > 2100) or Not(dw  in [1..7]) or Not(d in [1..daysInMonth(y, m)]) then
Но это не красиво ;–(

Это гораздо сильнее напрягает программу, чем простое сравнение.
Дело в том, что в ТР множество нельзя построить на значениях типа Integer, которые используются в описании переменных.
Поэтому программа производит перевод значений Byte—Integer (однобайтное — двухбайтное). На что тратится довольно много тактов.
Пока у вас такое сравнение не в цикле — это не заметно.
Но, многие начинающие программировать, могут использовать такие конструкции в циклах, строящих графические изображения или сложных вычисления. А потом удивляются: „ну что так тормозит?“…

Главное, что моя программа работает правильно!
И учитывает високосные года…
И не обязательно её ограничивать 1900..2100 годами…
Только вот переход с Юлианского на Григорианский не учтён…
Ну и, чисто для России — декрет Совнаркома 1918 года ;–)
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
07.12.2017, 14:03  [ТС]
Цитата Сообщение от JuriiMW Посмотреть сообщение
Главное, что моя программа работает правильно!
И учитывает високосные года…
Да мне не нужно великое красивое творение. Главное показать использование множества, пусть даже без учета високосных. Для студента красивые программы слишком палевные, мне же не для продакшн.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2017, 14:03
Помогаю со студенческими работами здесь

Определить день недели, на который приходится день с датой d (день), m (месяц)
Считая, что год не високосный и его 1 января приходится на день недели wd1, определиь wd -день недели, на который приходится день с датой...

Присвоить величине n значение 1,2, ..., 6 или 0 в зависимости от того, на какой день недели приходится k-ый день года
Дано целое число k(1&lt;=k&lt;=365). Присвоить целочисленной величине n значение 1,2, ..., 6 или 0 в зависимости от того, на какой день недели...

Определить, на какой день недели приходится 1 число любого месяца при заданном дне недели 1 января
Определит на какой день недели относиться 1 число любого месяца при заданном дне недели 1 января Примечания: В качестве оператора...

По заданному числу D определить, какой день недели приходится на это число в феврале 2018 года
По заданному числу D определить какой день недели приходится на это число в феврале 2018 года, если известно , что 1 февраля - четверг? ...

Определить день недели, на который приходится дата d
type число =1..31; месяц=1..12; год=1..2000; дата = record ч: число; м: месяц; г: год end; деньнедели = (пн, вт, ср, чт, пт, сб,...


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

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

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru