Определить, сколько дней осталось от заданного дня до нового года. Проверить программу - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Всем здарова! Нужно было написать программу, которая вводит с клавиатуры номер месяца и день, и определяет, сколько дней осталось до Нового года. При вводе неверных данных нужно вывести число -1. Считается, что год невисокосный. Ссылка на задание (Ссылка удалена) Мне пишет "Частичное решение", 25 баллов, то есть 5 тестов я не прошел. Заранее спасибо!)))
Листинг программы
  1. var a,b,c,i:integer;
  2. M: array [1..12] of integer;
  3. begin
  4. c:=365;
  5. for i:=1 to 12 do
  6. case i of
  7. 1,3,5,7,8,10,12: M[i]:=31;
  8. 4,6,9,11: M[i]:=30;
  9. 2: M[i]:=28;
  10. end;
  11. readln(a,b);
  12. if ((b>30) and ((a=4) or (a=6) or (a=9) or (a=11))) or ((b>28) and (a=2))
  13. then writeln ('-1')
  14. else
  15. if (a>0) and (a<=12) and (b>0) and (b<=31) then
  16. begin
  17. while a>1 do
  18. begin
  19. c:=c-M[a];
  20. a:=a-1;
  21. end;
  22. c:=c-b;
  23. writeln (c)
  24. end
  25. else writeln ('-1');
  26. end.

Решение задачи: «Определить, сколько дней осталось от заданного дня до нового года. Проверить программу»

textual
Листинг программы
  1. CONST
  2.   Max_Day: Array [1..12] of Integer = (31,28,31,30,31,30,31,31,30,31,30,31);
  3. VAR
  4.   Day, Month: LongINt;
  5.   Kol_Day: LongINt;
  6.  
  7. BEGIN
  8.   Read(Month, Day);
  9.   // Проверяем данные
  10.   if (Month * Day < 1) then begin Write(-1); Exit; End;
  11.   If (Month > 12)or(Day > Max_Day[Month]) then begin Write(-1); Exit; End;
  12.  
  13.   // Считаем дни
  14.   Kol_Day := 0;
  15.   While (Month <> 12)or(Day <> 31) do begin
  16.     Inc(Kol_Day);
  17.    
  18.     if (Day < Max_Day[Month]) then Inc(Day)
  19.     Else begin Inc(Month); Day := 1; end;
  20.   End;
  21.  
  22.   Write(Kol_Day);
  23. END.

Объяснение кода листинга программы

  1. Объявлены константы и переменные:
    • Max_Day: массив из 12 целых чисел, представляющих количество дней в каждом месяце (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    • Day, Month: переменные типа LongInt для чтения номера месяца и дня месяца;
    • Kol_Day: переменная типа LongInt для подсчета количества дней.
  2. Пользователю предлагается ввести номер месяца и дня месяца.
  3. Происходит проверка введенных данных:
    • Если месяц * день < 1, выводится -1 и выполняется выход из программы.
    • Если месяц > 12 или день > Max_Day[месяц], выводится -1 и выполняется выход из программы.
  4. Инициализируется переменная Kol_Day со значением 0.
  5. Запускается цикл, который выполняется до тех пор, пока месяц не станет равным 12 или день не станет равным 31:
    • Увеличивается значение переменной Kol_Day.
    • Если день меньше Max_Day[месяц], увеличивается значение переменной Day.
    • Если день равно Max_Day[месяц], увеличивается значение переменной Month на 1, а значение переменной Day устанавливается равным 1.
  6. После завершения цикла выводится значение переменной Kol_Day.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы