Объясните, почему программа не выдает результата? program friday; var n,a,l,i: longint; k,p: integer; label goback; beginwrite('введите месяцы и день'); read(n,k); if k< =5 thenp: =1+(5-k); if k=6 thenp: =7; if k=7 thenp: =6; a: =0; l: =0; for i: =1 to n dobegingoback: l: =l+1; p: =p+7; if p> 30 thenp: =p-30; if p=13 thenbegina: =a+1; goto gobackendelse goto goback; if l=n thenbreakend; write(a)end.

kabulbekova01 kabulbekova01    2   09.09.2019 19:10    0

Ответы
Fidjit Fidjit  07.10.2020 03:48
Программа не работает, по тому, что в цикле после условия "if p=13", в блоке else у вас идет "зацикливание". По goto вы прыгаете опять обратно в начало итерации цикла.
Очевидно, что успешность выполнения завершения цикла зависит от значения P, так как в любом случаи, если P != 13, вы возращаетесь в начало цикла.

Маленькое лирическое отступление:
Отформатированный код будет приведен в коментариях, если кому-то не ясно.

Ваш код сложно назвать "спагетти кодом", т.к. у вас все довольно очевидно, с тем лишь отличием, что вы используете дериктиву goto, от неё откажитесь в вашей практике, сложнее понять как будет функционировать ваша программа, хотя вашем коллегам по старше будет это очевидно, при наличии опыта.

P.S.
Создайте новый вопрос с описанием задачи и скиньте мне сообщением ссылку.

за отметку "Лучший ответ" и нажатую кнопочку " " тут и в моем профиле.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика