Предмет: Информатика, автор: DuckDance

Объясните, почему программа не выдает результата?
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.

Ответы

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

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

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

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

Спасибо за отметку "Лучший ответ" и нажатую кнопочку "спасибо" тут и в моем профиле.
Автор ответа: Аноним
0
А дискуссии не являются частью ответа их следует располагать в комментариях.
Автор ответа: Аноним
0
Размещенный Вами текст программы не является частью какой-либо дискуссии, следовательно, он может быть на этом основании удален.
Автор ответа: DigitalAnnihilator
0
Ооооочень субьективно, считаю что вы не компитентны, как же дискуссия может начатся если никто и ничего не скажет. К тому же ответ я дал исчерпывающий на поставленный вопрос
Автор ответа: Аноним
0
Вы можете считать меня некомпетентным, также как я могу считать Ваш комментарий спамом, не имеющим отношение к обсуждению. Но вот это Ваше мнение, касающееся модерации, с переходом на личности и выложенное в открытый доступ - за него Вы понесете надлежащее наказание.
Автор ответа: DigitalAnnihilator
0
Я не переходил на личности, просто считаю проделанную вами работу не компетентной, мое оценочное суждение) Ну а спамом коментарий не является, вы сами писали что в коментариях ведется дискуссия)
Похожие вопросы