ВУЗ:
Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »