На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 8
ссылка на сообщение  Отправлено: 29.12.17 18:47. Заголовок: Задание 14, разбор решения


Здравствуйте! Я не понимаю объяснение примера задания Р-10 (ege14), а именно в пункте 9) «Несмотря на то, что набирается три «5», не происходит замена трех «5» на «2», так как ветвь «Иначе» выполняется только в том случае, если не отработала ветвь «То»».
На самом деле ветвь "Иначе" в полном ветвлении "Если" выполняется в случае ложного значения логического выражения, что и должно произойти: При выполнении команды "ПОКА нашлось (222) или нашлось (555)" Редактор найдёт последовательность (555), возвращается логическое значение "истина", заходим в цикл. В команде "ЕСЛИ нашлось (222)" возвращается логическое значение "ложь", переходим на ветвь "ИНАЧЕ", выполняется команда "заменить (555,2)".
А в приведённом решении задания Р-10 пункты 9-11 противоречат Вашему же предупреждению "Возможные ловушки и проблемы". Почему во всех темах этого форума, связанных с 14 заданием (с Редактором), в объяснениях решений ветви полного ветвления "Если_то_иначе" неравноценны, т.е. ветвь "иначе" просто игнорируется? Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]


Администратор




Сообщение: 1559
ссылка на сообщение  Отправлено: 29.12.17 20:55. Заголовок: Анна_Л пишет: ветвь ..


Анна_Л пишет:
 цитата:
ветвь "иначе" просто игнорируется

Нет, не игнорируется. Ветвь "иначе" выполняется тогда, когда не выполнено условие после "если" и не отработала ветвь "то". Пусть строка равна '555222'. Сравните работу трёх программ на этой строке:
 ЕСЛИ нашлось (222) 
ТО заменить (222, 5)
ИНАЧЕ заменить (555, 2)
КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (555) 
ТО заменить (555, 2)
ИНАЧЕ заменить (222, 5)
КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (222) 
ТО заменить (222, 5)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (555)
ИНАЧЕ заменить (555, 2)
КОНЕЦ ЕСЛИ
Все три результата разные.


___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
ссылка на сообщение  Отправлено: 30.12.17 22:58. Заголовок: Я по-прежнему не пон..


Я по-прежнему не понимаю добавку "и не отработала ветвь ТО": для меня "И" неразрывно связана с конъюнкцией.
Разбирая приведённые Вами примеры и ещё раз просматривая ветви форума, я поняла, что основные проблемы и разногласия на самом деле связаны с тем, что в заданиях на Редактора не прописано, как работает команда "нашлось" и новая итерация цикла ПОКА после выполнения команды "заменить": поиск начинается каждый раз с начала строки (аналогично функции POS в Паскале) или с той позиции в строке, после которой произошла замена? Если второй вариант, то почему после того, как Редактор просмотрел всю строку, он опять начинает с начала строки (как это описано в п.11 решения р-10)? Мне показалось, что сами разработчики это понимают по-разному: в пособиях Лещинера подразумевается поиск каждый раз с начала, а в пособиях Крылова - последовательный, с позиции после замены, с прохождением по строке несколько раз. Хотелось бы услышать Вашу точку зрения. Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 1562
ссылка на сообщение  Отправлено: 30.12.17 23:04. Заголовок: Анна_Л пишет: Я по-п..


Анна_Л пишет:
 цитата:
Я по-прежнему не понимаю добавку "и не отработала ветвь ТО": для меня "И" неразрывно связана с конъюнкцией.

Если условие верно, то ветвь ТО срабатывает. А чтобы разобраться - наберите программу и пройдите в пошаговом режиме.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 10
ссылка на сообщение  Отправлено: 01.01.18 17:50. Заголовок: Здравствуйте, Конста..


Здравствуйте, Константин Юрьевич! Воспользовалась Вашим советом, написала программу и действительно разобралась, что же я не понимала в объяснениях этого задания. Разрешите предложить свою интерпретацию п. 9) разбора задания р-10. Может, это будет кому-то, как и мне, понятнее:
"На четвертой итерации цикла в строке присутствуют и три получившиеся пятерки, и оставшиеся 238 двоек, т.е. в условии ПОКА оба выражения: "нашлось (222)" и "нашлось (555)" истинны. Но поскольку в условном операторе ЕСЛИ в ветке ТО стоит проверка "нашлось (222)", будет проверяться именно это условие, и выполнится замена трёх двоек на пятёрку. Это будет продолжаться до тех пор, пока Редактор будет находить в строке не менее трёх двоек".
Может, кому-то пригодится и моя программа на Паскале (для задания р-10), программа Наймушина на моём комьпютере не пошла, разбираться было лень(.
program task_14;
const
s2 = '222';
s5 = '555';
var
s: string;
s0: char;
i, i2, i5, n: integer;
begin
writeln('введите символ и через пробел количество повторений');
readln(s0, i);
for n := 1 to i do s := s + s0;
while (pos(s2, s) <> 0) OR (pos(s5, s) <> 0) do
if pos(s2, s) <> 0 then
begin
i2 := pos(s2, s);
s[i2] := '5';
delete(s, i2 + 1, 2);
writeln('i2=', i2, ' ', s);
end
else
begin
i5 := pos(s5, s);
s[i5] := '2';
delete(s, i5 + 1, 2);
writeln('i5=', i5, ' ', s);
end;
writeln(s)
end.
Спасибо за помощь!

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 26.01.18 22:00. Заголовок: Задание 170


Добрый вечер. Прорешали несколько раз задание 170, ответ получаем 565. У Вас 564. Какой там все таки ответ?

Спасибо: 0 
Цитата Ответить
Администратор




Сообщение: 1581
ссылка на сообщение  Отправлено: 26.01.18 22:04. Заголовок: Рамзия пишет:Прореша..


Рамзия пишет:
 цитата:
Прорешали несколько раз задание 170, ответ получаем 565. У Вас 564. Какой там все таки ответ?

1) приводите ваше решение, будем разбираться.
2) можно ведь просто программу написать и проверить.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
ссылка на сообщение  Отправлено: 21.02.18 12:06. Заголовок: Ответ Анне_Л


Добрый день, Анна. Я Наймушин Александр Львович, программа которого на Вашем компьютере "не пошла". Там есть инструкция для пользователя, где сказано: на компьютере должно быть установлено ПО Net.Framework 4.0 или выше. И тогда все работает.
Если Вы работаете в Питоне 3.4.1, могу предложить простенькую программку для решения таких задач, например, задача 14-172.
Набираете в Paint, сохраняете с расширением *.py, затем открываете в IDLE, выводятся все получаемые строки одна за одной до последней.

s = '3'+'6' * 115+'3'
while '63' in s or '664' in s or '6665' in s:
if '63' in s:
s = s.replace('63','4',1)
print(s)
elif '664' in s:
s = s.replace('664','65',1)
print(s)
elif '6665' in s:
s = s.replace('6665','63',1)
print(s)
print(s)


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 10
ссылка на сообщение  Отправлено: 21.02.18 12:07. Заголовок: Ответ Анне_Л


Добрый день, Анна. Я Наймушин Александр Львович, программа которого на Вашем компьютере "не пошла". Там есть инструкция для пользователя, где сказано: на компьютере должно быть установлено ПО Net.Framework 4.0 или выше. И тогда все работает.
Если Вы работаете в Питоне 3.4.1, могу предложить простенькую программку для решения таких задач, например, задача 14-172.
Набираете в Paint, сохраняете с расширением *.py, затем открываете в IDLE, выводятся все получаемые строки одна за одной до последней.

s = '3'+'6' * 115+'3'
while '63' in s or '664' in s or '6665' in s:
if '63' in s:
s = s.replace('63','4',1)
print(s)
elif '664' in s:
s = s.replace('664','65',1)
print(s)
elif '6665' in s:
s = s.replace('6665','63',1)
print(s)
print(s)


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 4980
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет