24.06.2019, 15:02 | #1 (permalink) |
Новичок
Регистрация: 24.06.2019
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Что значит ppk3:=99?
ppk3:=99; repeat if (A[i]>0) and ((A[i] mod 3)=0) then ppk3:=A[i] else i:=i-1; until ppk3<>99; writeln('posledniy polo}|{itelniy element kpatniy 3' ppk3:4) Что значит ppk3:=99? Спасибо! |
24.06.2019, 15:02 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
что это значит что это значит что это значит??? Что это значит? |
24.06.2019, 16:32 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Что переменной ppk3 присвоено исходное значение 99.
Вообще программа (точнее, фрагмент) написана не так, чтобы очень. Точнее, очень не очень. Разберёмся. Как я понял, задача поставлена так. Есть массив из N целых элементов (положительных и отрицательных), причем в нём заведомо нет элемента со значением 99, и требуется найти последний положительный элемент, кратный 3. Прекрасно. Решается, судя по программе, это так. Вводится переменная ppk3, которой присваивается значение 99, и дальше, идя по массиву с конца в начало, мы ищем элемент, удовлетворяющий поставленным условиям (положительный и кратный 3). Найдя таковой, мы присваиваем его значение переменной ppk3, обрываем цикл и выводим найденное значение на экран. Но возникает вопрос: а если среди элементов массива не найдётся нужного? Тогда программа не сможет выйти из цикла, попытается присвоить индексу массива (i) нулевое или отрицательное значение, и возникнет ошибка выхода за диапазон индексов массива! Чтобы этого избежать, чуть усложним программу: Код:
i:=N; ppk3:=99; repeat if (A[i]>0) and ((A[i] mod 3)=0) then ppk3:=A[i] else i:=i-1; until (ppk3<>99) or (i=0); if ppk3<>99 then writeln('last positive divisible by 3 element is', ppk3:4) else writeln('array contains no positive divisible by 3 elements'); readln P.S. И модераторское замечание: не цепляйтесь к чужим темам, создавайте свои! |
25.06.2019, 07:26 | #3 (permalink) |
Member
Регистрация: 31.08.2015
Сообщений: 19,433
Сказал(а) спасибо: 283
Поблагодарили 213 раз(а) в 96 сообщениях
Репутация: 80884
|
Владимир Игоревич, при всём уважении..
Ну на кой ляд там именно этот оператор? Всё равно значение будет присвоено раньше первого использования этой переменной.
__________________
Пожалуйста не предлагайте мне дружбу. Не хочу отказывать, но у меня другие понятия, поэтому просто не отвечу. |
25.06.2019, 07:46 | #4 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
это значение используется в качестве условия для выхода из цикла.
__________________
Убить всех человеков! |
25.06.2019, 08:15 | #5 (permalink) |
Member
Регистрация: 31.08.2015
Сообщений: 19,433
Сказал(а) спасибо: 283
Поблагодарили 213 раз(а) в 96 сообщениях
Репутация: 80884
|
Мы имеем огрызок от программы, не зная ничего об исходных условиях и задаче в целом. Мы не знаем диапазонов значений.
Что такое N? Что произойдёт в версии Владимира, если первым же элементом массива окажется 99? Если он окажется любым элементом? В используемом диалекте Паскаля нумерация элементов массива начинается с нуля или единицы? Если с нуля - один элемент не будет обработан. Да и интересный порядок обработки массива: с последнего Особенно с учётом выводимого сообщения о последнем кратном элементе.
__________________
Пожалуйста не предлагайте мне дружбу. Не хочу отказывать, но у меня другие понятия, поэтому просто не отвечу. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
25.06.2019, 10:44 | #6 (permalink) | |||||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Андрей, значит так, укладывайся на разделочную доску и приготовься: сейчас я из тебя отбивную делать буду.
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
7 13 6 8 9 5 и нужно найти последний элемент, кратный трём, т.е., в данном случае, это число 9. И вот тут рационально пойти с конца, пока не выполнится условие кратности. В данном случае 5 — нет, 9 — да. И на этом цикл завершается, задача решена. |
|||||
25.06.2019, 11:45 | #7 (permalink) |
Member
Регистрация: 31.08.2015
Сообщений: 19,433
Сказал(а) спасибо: 283
Поблагодарили 213 раз(а) в 96 сообщениях
Репутация: 80884
|
А соусом табаско польёшь?
Извини, пропустил. Дурная привычка начинать сначала. Тормознул, что для таких условий лучше начинать с конца.
__________________
Пожалуйста не предлагайте мне дружбу. Не хочу отказывать, но у меня другие понятия, поэтому просто не отвечу. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|