Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 16.01.2011, 19:49   #1 (permalink)
N@tali
Member
 
Регистрация: 02.01.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Найдите, пожалуйста, ошибку

Дано 2 числа. D-число, M-месяц, дана дата 20 мая. Указать какой день недели. Условия: год не високосный, 1 января воскресенье.



Код:
uses crt;
type day=1..31;
  month=(jan,fv,mr,ap,mj,jun,jul,av,sn,oc,nb,dc);
  {week=(vs,pn,vt,sr,ch,pt,sb); }
var d:day;  
 m:month;   
 {wdl,wd:week;}
  k:0..12;
  a:array[jan..dc] of day;
 s,os:word;
begin
clrscr;
for m:=jan to nb do
case ord(m) of
0:a[m]:=31;
3,5,8,10:a[m]:=30;
1:a[m]:=28;
else a[m]:=31;
end;
writeln('День недели 01.01 января');
writeln('0-воскресенье 1-понедельник 2-вторник 3-среда 4-четверг 5-пятница 6-суббота');
readln(d);
if d<4 then os:=3-d else os:=10-d; {нужный остаток от деления на 7}
s:=0;k:=0;
for m:=jan to nb do
 begin
  if s mod 7=os then k:=k+1;
  {если количество всех предшествующих дней в остатке от деления на 7 дает нужное число}
  end;
write('День недели будет',k);
readln;
end.
N@tali вне форума   Ответить с цитированием

Старый 16.01.2011, 19:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Схожие по содержанию с вашим топики могут помочь

Найдите кота
Как убрать эту ошибку?

Старый 16.01.2011, 21:38   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ошибка в том, что переменной d Вы присваиваете значение типа "диапазон" 1..31, а в запросе воскресенью соответствует недопустимое значение "0".
Vladimir_S вне форума   Ответить с цитированием
Старый 16.01.2011, 21:55   #3 (permalink)
N@tali
Member
 
Регистрация: 02.01.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

подскажите пожалуйста, а где именно лучше исправить.... и правильно ли я оформила задачу...неуверенна че то громоздко у меня для такой задачи...есть ли вариант ее как то упростить

Последний раз редактировалось N@tali; 16.01.2011 в 22:00
N@tali вне форума   Ответить с цитированием
Старый 16.01.2011, 22:00   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да уж... что есть, то есть. Ладно, сейчас попробую прикинуть.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.01.2011, 22:07   #5 (permalink)
N@tali
Member
 
Регистрация: 02.01.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо вам огромное.... вы гений... а я ток учусь... маленько то начала во все вникать....там вроде я перемудрила надо цикл задать до марта токо а я вроде до ноября поставила... в общем запуталась уже
N@tali вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 16.01.2011, 22:22   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Я бы вообще ограничился чем-нибудь простеньким, вроде вот такого:
Код:
Const
 DoM:Array[1..12] of Word=(31,28,31,30,31,30,31,31,30,31,30,31);
Var
 Month,Date,i,m:Byte;
 ND:Word;
BEGIN
 Write('Month (1-12) = ');
 ReadLn(Month);
 Write('Date = ');
 ReadLn(Date);
 ND:=0;
 For i:=1 to Month-1 do
  ND:=ND+DoM[i];
 ND:=ND+Date;
 m:=ND mod 7;
 Case m of
   0:WriteLn('Saturday');
   1:WriteLn('Sunday');
   2:WriteLn('Monday');
   3:WriteLn('Tuesday');
   4:WriteLn('Wednesday');
   5:WriteLn('Thursday');
   6:WriteLn('Friday');
  end;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.01.2011, 22:28   #7 (permalink)
N@tali
Member
 
Регистрация: 02.01.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Супер. Спасиб огромное.... жаль не могу вам еще плюсик...не дают
N@tali вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:47.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.