Лабораторный практикум по программированию на языке Паскаль. Найханова Л.В - 33 стр.

UptoLike

33
Пример.
Словесная постановка задачи:
Определить следующую дату дня недели, если заданы текущая дата и день недели. Текущая
дата включает число и номер месяца. При выводе дата отображается в виде числа и названия
месяца.
Программа на языке Паскаль:
Program PRIMER;
Type
mounth = (jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);
day = 1..31;
year = 1900..2000;
Var
d : day;
m : mounth;
g : year;
num : 1..12;
Begin
Write('==>');
Readln(d, num, g); { ввод даты - число, номер месяца, год }
Case num of
1 : m:= jan;
2 : m:= feb;
3 : m:= mar;
4 : m:= apr;
5 : m:= may;
6 : m:= jun;
7 : m:= jul;
8 : m:= aug;
9 : m:= sep;
10 : m:= oct;
11 : m:= nov;
12: m:= dec;
End;
Case m of { контроль на корректность количества дней в месяце}
jan, mar, may, jul, aug, oct : If d = 31 then
begin
d := 1; m := succ(m)
end
else d := d + 1;
apr, jun, sep, nov : If d = 30 then
begin
d := 1; m := succ(m)
end
else d := d + 1;
dec : If d = 31 then
begin
d := 1; m := jan; g := g + 1
end
else d := d + 1;
feb : If (( d = 28) and ((g mod 4 <> 0) or (g mod 100 = 0))
and (g mod 400 <> 0)) or (d=29) then
begin
Пример.
Словесная постановка задачи:
Определить следующую дату дня недели, если заданы текущая дата и день недели. Текущая
дата включает число и номер месяца. При выводе дата отображается в виде числа и названия
месяца.
Программа на языке Паскаль:
Program PRIMER;
Type
   mounth = (jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);
   day = 1..31;
   year = 1900..2000;
Var
   d : day;
   m : mounth;
   g : year;
   num : 1..12;
Begin
   Write('==>');
   Readln(d, num, g); { ввод даты - число, номер месяца, год }
   Case num of
       1 : m:= jan;
       2 : m:= feb;
       3 : m:= mar;
       4 : m:= apr;
       5 : m:= may;
       6 : m:= jun;
       7 : m:= jul;
       8 : m:= aug;
       9 : m:= sep;
       10 : m:= oct;
       11 : m:= nov;
       12: m:= dec;
   End;
   Case m of       { контроль на корректность количества дней в месяце}
   jan, mar, may, jul, aug, oct : If d = 31 then
                                  begin
                                       d := 1; m := succ(m)
                                  end
                                  else d := d + 1;
   apr, jun, sep, nov    : If d = 30 then
                              begin
                                  d := 1; m := succ(m)
                              end
                              else d := d + 1;
   dec                     : If d = 31 then
                              begin
                                  d := 1; m := jan; g := g + 1
                              end
                              else d := d + 1;
   feb                    : If (( d = 28) and ((g mod 4 <> 0) or (g mod 100 = 0))
                              and (g mod 400 <> 0)) or (d=29) then
                              begin

                                                                                     33