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

Задаётся с клавиатуры день и месяц. Вывести день недели

28.06.2011, 20:15. Показов 2154. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задаётся с клавиатуры день и месяц 2011 года. Необходимо вывести на экран, какой это день недели.
Помогите пожалуйста решить!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2011, 20:15
Ответы с готовыми решениями:

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

Ввести с клавиатуры число, месяц, год, день недели. Вывести на экран дату и день недели для следующего дня.
Ввести с клавиатуры число, месяц, год, день недели. Вывести на экран дату и день недели для...

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

Текущее число, день недели, месяц и год (неправильно отображается день недели)
Всем доброго времени суток. Все перечисленное из название темы показывается как есть, кроме Дня...

14
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
28.06.2011, 20:34 2
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
program Noname28;
    const years:array[1..4] of byte
        = (0,2,3,4);
    const months:array[1..12] of byte
        = (0,3,3,6,1,4,6,2,5,0,3,5);
    const dayOfWeek:array[0..6] of string[3]
        = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
        
    var day,month,tmp,a,b,c,e:integer;
begin
  Repeat
    Write('Day xx   >');
    ReadLn(day);
  Until day in [1..31];
  
  Repeat
    Write('Month xx >');
    ReadLn(month);
  Until month in [1..12];
  
  tmp:=2011-1996;
  a:=tmp and 3;
  b:=(tmp shl 2) + (tmp and $0fc);
  c:=months[month];
  
  if ((a=0) and (month>2)) then inc(c);
  a:=years[a];
  e:=(a+b+c+day) mod 7;
  WriteLn('It must be ',dayOfWeek[e]);
  
  Readln;
end.
1
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 20
28.06.2011, 20:38  [ТС] 3
Спасибо большое!
0
0 / 0 / 0
Регистрация: 28.06.2011
Сообщений: 7
28.06.2011, 20:48 4
Daemon025, скажите а это в Турбо Паскале сделано????
0
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
28.06.2011, 20:49 5
Галя55, Free Pascal. Есть вариант на C++.
0
0 / 0 / 0
Регистрация: 28.06.2011
Сообщений: 7
28.06.2011, 21:02 6
а можете сделать эту задачу в ABC Pascal ????
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.06.2011, 21:13 7
Галя55, Так она и в АВС будет работать.

Добавлено через 2 минуты
Если хотите в отдельном окне, допишите
Pascal
1
2
program Noname28;
uses crt;
и уберите в конце
Pascal
1
readln
он не нужен.
0
0 / 0 / 0
Регистрация: 28.06.2011
Сообщений: 7
28.06.2011, 21:16 8
это я понимаю))) просто тут очень сложно! можно сделать её попроще???

Добавлено через 1 минуту
чтобы она соответствовала ABS Паскалю.
0
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
28.06.2011, 21:24 9
Цитата Сообщение от Галя55 Посмотреть сообщение
тобы она соответствовала ABS Паскалю.
каким стандартам ABC этот код не соответствует?
0
0 / 0 / 0
Регистрация: 28.06.2011
Сообщений: 7
28.06.2011, 21:31 10
ABC Pascal

Добавлено через 6 минут
проще её сделать можно???

Добавлено через 33 секунды
или только этот вариант решения???
0
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
28.06.2011, 21:32 11
можно, с casom
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.06.2011, 21:33 12
Можно сделать понятнее, но длиннее..
0
0 / 0 / 0
Регистрация: 28.06.2011
Сообщений: 7
28.06.2011, 21:35 13
если не трудно, то сделайте пожалуйста!!!
заранее огромное спасибо)
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.06.2011, 21:50 14
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
uses crt;
const dm:array[1..12] of byte=(0,31,28,31,30,31,30,31,31,30,31,30);
      //кол. дней в предшествующих месяцах
      nd:array[0..6] of string[15]=('пятница','суббота','воскресенье','понедельник','вторник','среда',
                                    'четверг'); //дни недели, 1 января-суббота
var d,m,k,i,n:byte;
begin
repeat
write('Введите номер месяца m=');
read(m);
if not m in [1..12] then writeln('Ошибка ввода, повторите');
until m in [1..12];
repeat
k:=0;
write('Введите номер дня в месяце d=');
read(d);
if((m in [1,3,5,7,8,10,12])and not(d in [1..31]))
or((m in [4,6,9,11])and not(d in [1..30]))
or((m=2)and not(d in [1..28])) then k:=1;
if k=1 then writeln('Ошибка ввода, повторите');
until k=0;
n:=d;//сколько дней прошло в данном месяце
for i:=1 to m do
n:=n+dm[i]; //сколько прошло за предыдущие месяцы
write(nd[n mod 7]);
end
.
1
0 / 0 / 0
Регистрация: 28.06.2011
Сообщений: 7
28.06.2011, 22:29 15
большое спасибо!!!))))

Добавлено через 32 минуты
Puporev, программа выдает какую-то ошибку((
Ошибка: 285 – выход за границы диапазона типа byte (строка 25)

Добавлено через 2 минуты
простите, все нормально!!!)))
еще раз сейчас перезапустила и все работает))))
еще раз большое спасибо!!!)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2011, 22:29
Помогаю со студенческими работами здесь

Дана дата в формате день:месяц:год. Определить день недели
Задание: Дана дата в формате день:месяц:год. Определить день недели.

Дата вводится в трех полях: день, месяц, год. Определить день недели
Помогите решить задачку,плииз

Как выделить из даты день, месяц, день недели
В Delphi пишу програмку для работы с Access. Там хранится табличка с полями HB_rukov (HB_rukov.ID,...

Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели
Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели. ...


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

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

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