Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Pascal] Определить день недели по числу и месяцу

13K
30 апреля 2007 года
*alt
36 / / 12.04.2007
Считая, что год високосный и 1 января приходится на день недели wd1, определить wd - день недели, на который приходится день с датой d,m.
Данные:
 
Код:
type Tmon = (jnr, fbr, mar, apr, may, jun, jly, aug, sep, oct, nov, dec);
       Tday = (mon, twu, wen, thr, fry, sat, sun);
var
      d:1..31;
      m:Tmon;
      wd1,wd:Tday;

Вот написал фунуцию
Код:
{выбор количества дней в месяце}
function D_In_M (m : TMon) : integer;
var i:integer;
begin
      case m of
        fbr : i:=29;
        apr, jun, sep, nov : i:=30;
      else
        i := 31;
      end;
  result:=i;
end;

Как определить день недели?

______________
Мозгов у нас предостаточно, но они в основном набекрень
7.8K
30 апреля 2007 года
Hrew
185 / / 23.04.2007
Думаю, Вам достаточно будет идеи - интереснее писать код самому, да и запомнится больше.

Итак, посчитайте количество дней с начала года до заданного дня (просуммируйте в цикле количество дней во всех месяцах от января до m-1, прибавьте d). Полученный результат разделите на 7 и найдите остаток от деления (остаток:=дней_с_начала_года mod 7). Если первый день года - понедельник, номер дня недели будет равен остатку (считая, что понедельник имеет номер 1). Если первый день - не понедельник, то считайте остаток как (дней_с_начала_года+смещение) mod 7. (например, если первый день - вторник, то смещение=1). Если остаток от деления равен 0, то это воскресенье.
13K
01 мая 2007 года
*alt
36 / / 12.04.2007
Я думаю эту задачу можно переделать под мои требования, но здесь модуль DOS, а у меня Windows в Delphi 7.0.
Что нужно изменить? Помогите, объясните...

Задача: У Васи Пупкина неожиданно сломался компьютер. Из-за отсутствия нужных материалов на ремонт понадобится N дней. Определите дату окончания ремонта, если известно, что компьютер сломался в текущем году, и ремонт должен закончиться тоже в этом году...
Код:
program Lab8_02_2; {by Volvo}
uses crt,dos;
var
 q:char;
 data:record
   day,year,months:word;
 end;
 j:integer;
 week:word;
 m:integer;
 g:word;

const
 month:array[1..12] of string[7] =
   ('января','февраля','марта','апреля','мая','июня','июля',
     'августа','сентябя','октября','ноября','декабря');
 a:array[1..12] of integer =
   (31,29,31,30,31,30,31,31,30,31,30,31);

begin
 repeat
   clrscr;
   getdate(data.year,data.months,data.day,week);
   g:=data.months;
   writeln('Сегодняшняя дата: ',data.day,' ',month[g]);
   writeln('введите число m через которое вы хотите узнать дату:');
   read(m);
   j:=m;
   while j<>0 do begin
     if j>a[data.months]-data.day then begin
       j:=j-(a[data.months]-data.day);
       inc(data.months);
       data.day:=0;
     end

     else begin
       data.day:=data.day+j; break;
     end;
   end;

   g:=data.months;
   writeln('Дата дня и месяц: ',data.day,' ',month[g] );
   write('Вычислить еще ?(Y/N)');
   q:=ReadKey;
 until not (q in ['Y','y']);
end.
7.8K
01 мая 2007 года
Hrew
185 / / 23.04.2007
*alt, я так понимаю, Вам из dos-варианта нужно в дельфи перевести?

Основная переделка будет связана с тем, что значения нужно вводить и выводить не в режиме командной строки, а с/на форму через визуальные компоненты.
1. Считывание данных:
в режиме командной строки - read(m);
с формы: поместите на форму компонент Edit. По умолчанию он будет иметь имя Edit1. Считать его значение и привести к формату int можно так: m := StrToInt(Edit1.Text);
2. Вывод данных:
в режиме командной строки: writeln('Сегодняшняя дата: ',data.day,' ',month[g]);
на форму: поместите на форму компонент Label. Тогда значение выводится так: Label1.Caption := "Сегодн.дата: "+data.day+" "+month[g];
Можно выводить в Edit: Edit1.Text:=...
3. Расчет производится по нажатию кнопки. Поэтому repeat...until not (q in ['Y','y']); становится не нужен, а вся процедура расчета переносится в обработчик кнопки Button.
4. Текущую дату в delphi можно узнать с помощью функции GetLocalTime. Применение смотрите в интернете.
257
01 мая 2007 года
kosfiz
1.6K / / 18.09.2005
Hrew
а не проще перевести в Console Application? тогда надо будет заменить только GetDate, т.е. скажем взять предложенную тобой GetLocalTime. ну еще поставить в uses Windows вместо crt и dos, и убрать строчку clrscr.
7.8K
02 мая 2007 года
Hrew
185 / / 23.04.2007
Цитата: kosfiz
а не проще перевести в Console Application?


Конечно проще. Но нужно же когда-то и к GUI-приложениям переходить...

13K
02 мая 2007 года
*alt
36 / / 12.04.2007
Если использовать getlocaltime вместо getdate, то какие изменения нужно произвести (какие параметры), всё-таки задача такая (см сообщ 1)
257
02 мая 2007 года
kosfiz
1.6K / / 18.09.2005
Hrew уже писал GetLocalTime только надо в uses модуль windows поставить. и посмотри справку по этой функции.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог