Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 14:08   #1
maks133
Новичок
Джуниор
 
Регистрация: 09.02.2011
Сообщений: 2
Стрелка Переделать программу

15 декабря всемирный день чаепития по введенному году показать день недели, на который попадает этот праздник

программа есть но она требует переделки так как при вводе года наименьшего чем 2004 выдает не точный результат
например: ввожу год 1995 должно выдать пятницу и т.д.
Заранее Спасибо!
Собственно программа:
Код:
program m1;
label 1;
var
  dn,dg,i,j,n,m,c:integer;
  a:array[1..31,1..10] of integer;
  deb:boolean;
begin
  readln(n);
 dn:=5;
  dg:=1;
  m:=31;
  deb:=false;
  for i:=2004 to n do
    begin
      if deb then
        begin
          if dn=7 then dn:=1
                  else inc(dn);
          if i mod 4=0 then
            if dn=7 then dn:=1
                    else inc(dn);
        end
      else deb:=true;
    end;
  if i mod 4=0 then dec(dn);
  for i:=1 to 12 do
    begin
      for j:=1 to m do
        begin
          if ((dg=350) and (n mod 4=0)) or ((dg=349) and (n mod 4>0)) then if i=12 then goto 1;
          if dn=7 then dn:=1 else inc(dn);
          inc(dg);
        end;
      case i of
        1       : if n mod 2<>0 then m:=28
                                else m:=29;
        3,5,8   : m:=30;
        2,4,6,7 : m:=31;
        end;
    end;
  1:writeln('Den chya v ',n,' godu prihoditsya na ',dn,' den nedeli'); 
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.05.2011 в 15:04.
maks133 вне форума Ответить с цитированием
Старый 04.05.2011, 15:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вот код функции из моей старой программы "Вечный календарь"
проверяйте:

Код:
function DayOfWeek(Day, Month, Year: Integer) : Integer;
var
  century, yr, dw: Integer;
begin
  if Month < 3 then
  begin
    Inc(Month, 10);
    Dec(Year);
  end
  else
     Dec(Month, 2);
  century := Year div 100;
  yr := year mod 100;
  dw := (((26 * month - 2) div 10) + day + yr + (yr div 4) +
    (century div 4) - (2 * century)) mod 7;
  if dw < 0 then DayOfWeek := dw + 7
  else DayOfWeek := dw;
  if (dw = 0) or ((dw+7)=0) then DayOfWeek:=7
end;

а полностью программа будет выглядеть так:
Код:
const
  DayOfWeekStr : array[1..7] of string[12] =
  ('Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресение');

function DayOfWeek(Day, Month, Year: Integer) : Integer;
var
  century, yr, dw: Integer;
begin
  if Month < 3 then
  begin
    Inc(Month, 10);
    Dec(Year);
  end
  else
     Dec(Month, 2);
  century := Year div 100;
  yr := year mod 100;
  dw := (((26 * month - 2) div 10) + day + yr + (yr div 4) +
    (century div 4) - (2 * century)) mod 7;
  if dw < 0 then DayOfWeek := dw + 7
  else DayOfWeek := dw;
  if (dw = 0) or ((dw+7)=0) then DayOfWeek:=7
end;

var
  n : integer;
begin
  WriteLn('Введите год: ');
  readln(n);
  WriteLn('Это - ',DayOfWeekStr[ DayOfWeek(15,12, n) ]);
  readln;
end.

Последний раз редактировалось Serge_Bliznykov; 04.05.2011 в 15:13.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать программу с C# на С++ Loka Помощь студентам 4 03.12.2010 23:25
Переделать программу на кассы mephistophel Помощь студентам 0 12.06.2010 17:57
Нужно переделать программу? bamer Фриланс 6 28.12.2008 17:12