MozZg
1

Определение соответствующего указанной дате дня недели

24.09.2008, 00:34. Показов 6155. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:
Написать программу, которая по введенному дня, месяцу, году, а так же дню недели, который был первым в этом году, определяет соответствующий указанной дате день недели. Год должен быть от 1901 до 2099. Дата должна быть реально существующей, то есть номер месяца должен быть больше 0 и не больше 12, номер дня должен быть больше 0 и не превышать количество дней в соответствующем месяце.
Я вроде бы все сделал, только препод может придраться по эффективности, если есть какие-либо замечания по улучшению проги или нашли ошибки отпишитесь.
И еще вопрос: как избавиться от 4ёх "end" в конце прога упрямо не хочет работать если их сделать меньше.

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
32
33
34
35
36
37
38
39
40
41
42
var
   a,b,c,d,e,y,z:integer; {е-количество дней  в феврале}
BEGIN
     write('Введите месяц (01-январь, 02-февраль и т.д.) - ');
     readln(a);
     write('Введите число - ');
     readln(b);
     write('Введите год (от 1901 до 2099) - ');
     readln(c);
     write('Введите день недели, с которого начался год (1-понедельник, 2-вторник и т.д.) - ');
     readln(d);
     IF(c mod 4=0) THEN e:=29 ELSE e:=28; {проверка на високосный год}
{begin - [i]лишний[/i]}
     case(a) of
       1: z:= (b-1) mod 7;
       2: z:= (31 + (b-1)) mod 7;
       3: z:= (31 + e + (b-1)) mod 7;
       4: z:= (62 + e + (b-1)) mod 7;
       5: z:= (92 + e + (b-1)) mod 7;
       6: z:= (123 + e + (b-1)) mod 7;
       7: z:= (153 + e + (b-1)) mod 7;
       8: z:= (184 + e + (b-1)) mod 7;
       9: z:= (215 + e + (b-1)) mod 7;
       10: z:= (245 + e + (b-1)) mod 7;
       11: z:= (276 + e + (b-1)) mod 7;
       12: z:= (306 + e + (b-1)) mod 7;
       13: z:= (337 + e + (b-1)) mod 7;
    end;
    y:=d+z;
{begin - [i]лишний[/i]}
    case (y) of
       1,8: write (b,'.',a,'.',c,' - ','понедельник');
       2,9: write (b,'.',a,'.',c,' - ','вторник');
       3,10: write (b,'.',a,'.',c,' - ','среда');
       4,11: write (b,'.',a,'.',c,' - ','четверг');
       5,12: write (b,'.',a,'.',c,' - ','пятница');
       6,13: write (b,'.',a,'.',c,' - ','суббота');
       7,14: write (b,'.',a,'.',c,' - ','воскресенье');
    end;
{end; - [i]лишний[/i]}
{end; - [i]лишний[/i]}
end.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2008, 00:34
Ответы с готовыми решениями:

Найти номер дня недели К-го дня года, если в этом году 1 января было днем недели с номером N
Дни недели пронумерованы следующим образом: 0 - воскресенье, 1 - понедельник, 2 - вторник, ..., 6 -...

Определение дня недели по дате
Здравстуйте. Частью моего задания является написать "функцию MH(d) для определения дня недели, на...

Определить день недели по указанной дате
Создать программу которая определяет день недели по указанной дате (по современному календарю)....

Составить программу нахождения по дате рождения дня недели, знака зодиака
"День недели". Составить программу нахождения по дате рождения дня недели, знака зодиака.

8
2 / 2 / 1
Регистрация: 29.10.2008
Сообщений: 57
28.09.2008, 22:41 2
Спасибо за задачу очень помогли!!!
0
0 / 0 / 0
Регистрация: 28.09.2008
Сообщений: 3
07.10.2008, 09:48 3
мне тоже такую задачу задали только с немного измененными условиями.
вопрос:
а как дописать эту задачу так чтобы не надо было вводить день недели с которого начинался год?
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
07.10.2008, 11:56 4
Условие задачи секретное?
0
0 / 0 / 0
Регистрация: 28.09.2008
Сообщений: 3
07.10.2008, 22:07 5
как дописать эту задачу так чтобы не надо было вводить день недели с которого начинался год?
этого не могу понять
а условие отличается только промежутком лет
0
0 / 0 / 0
Регистрация: 28.09.2008
Сообщений: 3
11.10.2008, 13:12 6
Кто нибудь знает как это сделать?
0
1512 / 779 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
11.10.2008, 16:10 7
Вот код функции которая возвращяет день недели по дате 0 - соответствует понедельнику 6 воскресенье
Pascal
1
2
3
4
5
6
7
8
9
function intdow(yyyy,mm,dd:integer):integer;
 var
 Addval:shortint;
begin
  if mm<3 then addval:=1
    else addval:=0;
  intdow:=(((3*yyyy-(7*(yyyy+(mm+9)div 12)) div 4 +
  (23*mm)div 9 +dd+2+((yyyy-addval)div 100+1)*3 div 4-16)mod 7));
end;
1
0 / 0 / 0
Регистрация: 11.10.2008
Сообщений: 15
11.10.2008, 16:20 8
Спасибо за задачу
0
Hitriy
27.10.2010, 17:35 9
Я тут написал программку, которая определяет день недели 1901-2096 годов, а также говорит, високосный год или нет. К тому же в программу нельзя ввести например 30 февраля или 31 апреля. В зависимости от того, високосный год или нет - 29 февраля можно ввести или нельзя. При нажатии на кнопку "Вычислить", если в месяце максимальное число меньше выбранного, оно автоматически становится максимальным для данного месяца. Вот ссылка на программу. Зацените. Если нужно будет, выложу исходники.
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2010, 17:35
Помогаю со студенческими работами здесь

Определение дня недели по формуле Зеллера
программа, которая, используя формулу Зеллера, определяет день недели для произвольной даты....

Определение по дате день недели
Напишите программу на языке Pascal, которая по дате определяет день недели, на который эта дата...

По заданному номеру квартала, дате которая включает число и название месяца и дня недели найти следующую дату
По заданному номеру квартала, дате которая включает число и название месяца и дня недели найти...

Определение следующего дня и дня недели по дате
На страницах форума нашел программу на паскале, мне нужна помощь в ее переводе на язык С....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru