Помогите пожалуйста переделать программу!!!
Задание:
{type число = 1..31;
месяц = (янв,фев,мар,апр,май,июн,июл,авг,се н,окт,ноя,дек);
деньнедели = (вс,пн,вт,ср,чт,пт,сб);
var d: число; m: месяц; wd1, wd: деньнедели; k: 0..12;
Считая, что год невисокосный и его 1 января приходится на день недели wd1,
определить wd - день недели, на который приходится день с датой d, m.}
Сама программа:
Код:
program zadanie2;
type
day = 1..31; //тип данных 'день'
days = 1..365;//тип данных -номер дня недели
month = 1..12;//тип данных- номер месяца
const all_month : array[1..12] of string =('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');//константа - массив названий месяцев
const all_daysofweek : array[1..7] of string = ('понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье');//константа - массив названий дней недели
var
i,j : integer; //счетчики для циклов расчета дня месяца
kd: days; //счетчик дней от начала года.
d : day;//дата внутри месяца (день) определяемого дня недели
m : month;//месяц определяемого дня недели
wd1s:string; //строка для ввода для недели, на который приходится 1ое января
days_in_month:array[1..12] of integer := (31,28,31,30,31,30,31,31,30,31,30,31); //массив значений - сколько дней в каждом месяце невисокосного года
begin
writeln('введите день недели на который пришлось первое января: '); //вывод на экран 'введите...'
readln(wd1s);//считывание данных из консоли в переменную wd1s
wd1s := UpperCase(wd1s); //перевод строки в верхний регистр.
if wd1s in ['MON', 'ПН', 'ПОНЕДЕЛЬНИК'] then kd := 0 //если значение wds = 'mon', 'пн' или 'понедельник', то kd = 1
else if wd1s in ['TUE', 'ВТ', 'ВТОРНИК'] then kd := 1 //ИНАЧЕ если значение wds = ''tue', 'вт' или 'вторник', то kd = 2
else if wd1s in ['WED', 'СР', 'СРЕДА'] then kd := 2 //ИНАЧЕ если...
else if wd1s in ['THU', 'ЧТ', 'ЧЕТВЕРГ'] then kd := 3 //ИНАЧЕ если..
else if wd1s in ['FRI', 'ПТ', 'ПЯТНИЦА'] then kd := 4 //ИНАЧЕ если..
else if wd1s in ['SAT', 'СБ', 'СУББОТА'] then kd := 5 //ИНАЧЕ если..
else if wd1s in ['SUN', 'ВС', 'ВОСКРЕСЕНЬЕ'] then kd := 6; //ИНАЧЕ если..
writeln('Введите день и месяц для определения дня недели:'); //вывод на экран сообщения 'введите'
readln(d, m);//считывание из консоли значений d и m - дня и месяца определяемого дня недели
for i:=1 to m do//цикл - переменная i принимает значения от 1 до номера введенного месяца
begin //так как в цикле больше 1 оператора, то применяется конструкция begin .. end
if i<m then //если i не номер введенного месяца, то..
for j:=1 to days_in_month[i] do //цикл от 1 до номера числа дней в iом месяце (числа дней в месяце содержатся в массиве days_in_month
kd:=kd+1 // прибавление к счетчику дней от начала года единицы
else //иначе - т.е. условие выполнения - если i равен номеру введенного месяца
for j:=1 to d do //тут цикл идет не до конца месяца, а до
kd:= kd+1; //прибавление к счетчику дней от начала года единицы
end;// конец выражения под циклом for i:=1 to m do (конструкции begin - end)
case (kd mod 7) of //оператор выбора - в зависимости от остатка деления количества прошедших дней от начала года (kd) на 7. пример- 1 mod 7 = 8 mod 7 = 1 = понедельник
0: writeln(d,' числа месяца ',all_month[m],' - ',all_daysofweek[7]); //если значение 0 выводится надпись из массива all_daysofweek с индексом 7 - 'воскресенье '
else writeln(d,' числа месяца ',all_month[m],' - ',all_daysofweek[kd mod 7]); //иначе выводится надпись из массива all_daysofweek с индексом kd mod 7 (индекс от 1 до 6)
end;
end.
Программа работает, только нужно переделать
Код:
if wd1s in ['MON', 'ПН', 'ПОНЕДЕЛЬНИК'] then kd := 0 //если значение wds = 'mon', 'пн' или 'понедельник', то kd = 1
else if wd1s in ['TUE', 'ВТ', 'ВТОРНИК'] then kd := 1 //ИНАЧЕ если значение wds = ''tue', 'вт' или 'вторник', то kd = 2
else if wd1s in ['WED', 'СР', 'СРЕДА'] then kd := 2 //ИНАЧЕ если...
else if wd1s in ['THU', 'ЧТ', 'ЧЕТВЕРГ'] then kd := 3 //ИНАЧЕ если..
else if wd1s in ['FRI', 'ПТ', 'ПЯТНИЦА'] then kd := 4 //ИНАЧЕ если..
else if wd1s in ['SAT', 'СБ', 'СУББОТА'] then kd := 5 //ИНАЧЕ если..
else if wd1s in ['SUN', 'ВС', 'ВОСКРЕСЕНЬЕ'] then kd := 6; //ИНАЧЕ если..
с помощью case, чтобы не писать каждую в отдельности