Показать сообщение отдельно
Старый 16.12.2010, 17:17   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от kulisk Посмотреть сообщение
Пожалуйста объясните программу.Вот условие:в заданной строке записаны 3 слова.Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово.Сама программа уже написана,мне нужно поэтапное объяснение к ней.
М-да... Мягко говоря, очень странный опус. На мой взгляд, программа вообще не решает поставленной задачи, т.е. работает неправильно. Ну давайте разбираться.
В первой части программы решается задача ввода с консоли трех слов. И делается это способом настолько диким, что ужас. Вместо того, чтобы написать три простые строчки типа
WriteLn('Word 1:'); ReadLn(s1);
WriteLn('Word 2:'); ReadLn(s2);
WriteLn('Word 3:'); ReadLn(s3);
там разведена бодяга со считыванием трех слов разом (одной строкой), после чего их натужно разделяют путем поиска символов пробелов, а в случае ненахождения пробелов программа молча вылетает, т.е. аварийно завершается. Без каких бы то ни было комментариев и пояснений.
Далее приступлено к решению самой задачи.
Тут требуется некое пояснение. Как я понял условие задачи, вопрос сводится к следующему: можно ли получить третье слово из букв, содержащихся в первых двух? Так вот, в программе это решается так: для каждой буквы третьего слова проверяется, есть ли такая буква в первом либо во втором слове (ну или в обоих). А теперь представьте, что первое слово - "муж", второе - "таз", третье - "мама". Программа в этом случае покажет положительный результат, между тем как понятно, что, поскольку требуется 2 буквы "м" и 2 буквы "а", результат должен быть отрицательным. Ведь в условии не сказано, что нет повторяющихся букв!
Не говоря уже о том, что там всюду понатыканы аварийные прерывания (Halt;), и это вместо того, чтобы вывести на экран информативное сообщение об ошибке, приостановить программу (чтобы пользователь смог эти сообщения прочитать), а уж только потом прерывать. Тоже и в конце - никакого останова. Опять Halt;
Ну вот Вам для начала материал к размышлению. Если нужна нормальная программа, можно подумать над этим.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070