Определить, сколько дней осталось от заданного дня до нового года. Проверить программу - PascalABC.NET
Формулировка задачи:
Всем здарова! Нужно было написать программу, которая вводит с клавиатуры номер месяца и день, и определяет, сколько дней осталось до Нового года. При вводе неверных данных нужно вывести число -1. Считается, что год невисокосный. Ссылка на задание (Ссылка удалена)
Мне пишет "Частичное решение", 25 баллов, то есть 5 тестов я не прошел. Заранее спасибо!)))
Листинг программы
- var a,b,c,i:integer;
- M: array [1..12] of integer;
- begin
- c:=365;
- for i:=1 to 12 do
- case i of
- 1,3,5,7,8,10,12: M[i]:=31;
- 4,6,9,11: M[i]:=30;
- 2: M[i]:=28;
- end;
- readln(a,b);
- if ((b>30) and ((a=4) or (a=6) or (a=9) or (a=11))) or ((b>28) and (a=2))
- then writeln ('-1')
- else
- if (a>0) and (a<=12) and (b>0) and (b<=31) then
- begin
- while a>1 do
- begin
- c:=c-M[a];
- a:=a-1;
- end;
- c:=c-b;
- writeln (c)
- end
- else writeln ('-1');
- end.
Решение задачи: «Определить, сколько дней осталось от заданного дня до нового года. Проверить программу»
textual
Листинг программы
- CONST
- Max_Day: Array [1..12] of Integer = (31,28,31,30,31,30,31,31,30,31,30,31);
- VAR
- Day, Month: LongINt;
- Kol_Day: LongINt;
- BEGIN
- Read(Month, Day);
- // Проверяем данные
- if (Month * Day < 1) then begin Write(-1); Exit; End;
- If (Month > 12)or(Day > Max_Day[Month]) then begin Write(-1); Exit; End;
- // Считаем дни
- Kol_Day := 0;
- While (Month <> 12)or(Day <> 31) do begin
- Inc(Kol_Day);
- if (Day < Max_Day[Month]) then Inc(Day)
- Else begin Inc(Month); Day := 1; end;
- End;
- Write(Kol_Day);
- END.
Объяснение кода листинга программы
- Объявлены константы и переменные:
- Max_Day: массив из 12 целых чисел, представляющих количество дней в каждом месяце (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
- Day, Month: переменные типа LongInt для чтения номера месяца и дня месяца;
- Kol_Day: переменная типа LongInt для подсчета количества дней.
- Пользователю предлагается ввести номер месяца и дня месяца.
- Происходит проверка введенных данных:
- Если месяц * день < 1, выводится -1 и выполняется выход из программы.
- Если месяц > 12 или день > Max_Day[месяц], выводится -1 и выполняется выход из программы.
- Инициализируется переменная Kol_Day со значением 0.
- Запускается цикл, который выполняется до тех пор, пока месяц не станет равным 12 или день не станет равным 31:
- Увеличивается значение переменной Kol_Day.
- Если день меньше Max_Day[месяц], увеличивается значение переменной Day.
- Если день равно Max_Day[месяц], увеличивается значение переменной Month на 1, а значение переменной Day устанавливается равным 1.
- После завершения цикла выводится значение переменной Kol_Day.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д