IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Дни недели, определить
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской

Репутация: -  0  +


Такая задача:

дана дата dd.month.yyyy и день недели
определить дату и день недели через опр. кол-во дней

дату я определил а с днем ничего в голову не лезет а завтра здавать

Код

program vp7_cale;
uses crt, strings;
const mname : array [1..12] of string [9] =('January', 'February',
                                           'March', 'April', 'May',
                                           'June', 'July', 'August',
                                           'September','October', 'November',
                                            'December');
     dname : array [1..7] of string [9] =('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');


type md = array [1..12] of byte;

procedure SetNumberOfDaysInMonth(y: word; var ar: md);
 var i:byte;
 begin
    for i:= 1 to 12 do
       case i of
         1, 3, 5, 7, 8, 10, 12: ar[i]:=31;
         2: if y mod 4 = 0 then
               ar[i]:= 29
            else
               ar[i]:=28;
         4, 6, 9, 11: ar[i]:= 30;
       end;
 end;

Function GetDayNum(d:string):byte;
  var i:byte;
    begin
      i:=0;
      repeat
        inc(i)
      until ( copy(d, 1, 3) = copy(dname[i], 1, 3) ) or (i>=7);
      GetDayNum:=i;
    end;

Function GetMonthNum(m:string):byte;
  var i:byte;
    begin
      i:=0;
      repeat
        inc(i)
      until ( copy(m, 1, 3) = copy(mname[i], 1, 3) ) or (i>=12);
      GetMonthNum:=i;
    end;


var kold: md;
   dd, dd1, mm, mm1, dday, dday1, i: byte;
   yyyy, yyyy1,nnmove, nmove: word;
   month, day: string[9];
   tmp: string;
begin
   ClrScr;

      textcolor(red); writeln('            -=  TIME MACHINE by murphy=-');
       textcolor(lightgreen);
       writeln('Please enter the today date:');
       write('   day of month:  ');  textcolor(lightgray); readln(dd);
       textcolor(lightgreen);
       write('   month:  '); textcolor(lightgray); readln(tmp); month:=tmp;
       textcolor(lightgreen);
       write('   year:   '); textcolor(lightgray); readln(yyyy);
       textcolor(lightgreen);
       write('   day of week:  '); textcolor(lightgray); readln(day);

       SetNumberOfDaysInMonth(yyyy, kold);

   writeln;
   dday:=GetDayNum(day);
   mm:=GetMonthNum(month);
   textcolor(green);
   writeln('You have chosen:');
   writeln(dd,'.', mm,'.', yyyy);
   textcolor(lightgreen);
   writeln;
   write('Enter number of days you want to move on:  ');
   textcolor(lightgray);
   readln(nmove);
   nnmove:=nmove;

   if nmove + dd <= kold[mm] then
      begin  dd1:=nmove + dd; mm1:=mm; yyyy1:=yyyy; end
   else
      begin
        dd1:=dd; mm1:=mm; yyyy1:=yyyy;
        nmove:= nmove - (kold[mm1]-dd);
        inc(mm1);
        if mm1=13 then
            begin
              mm1:=1; inc(yyyy1);
              SetNumberOfDaysInMonth(yyyy, kold);
            end;
        while nmove>=kold[mm1] do
         begin
           dec(nmove, kold[mm1]);
           inc(mm1);
           if mm1=13 then
              begin
                mm1:=1; inc(yyyy1);
                SetNumberOfDaysInMonth(yyyy, kold);
              end;
         end;
         dd1:=nmove+1;
      end;

      nnmove:=7-dday+1;
      dday1:=nnmove mod 7;

   write(dday1, '  ');
   writeln(dd1,'.', mm1,'.', yyyy1);
   readln;
end.


З.Ы. может еще посоветуете как лучше дату определить


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Задача сто процентов решелась такаяже, ищи.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Частный случай этой задачи рассматривался здесь: http://forum.pascal.net.ru/index.php?showt...indpost&p=28882 Частный - потому что начальная и конечная дата должны быть в одном и том же году...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 10:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name