| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [pascal] слово перевертышь |
| Автор: xF1x 13.5.2008, 21:43 |
| Всем доброго времени суток! ПОМОГИТЕ решить школьную задачу! ТОЛЬКО ЧТО начали изучать строковый тип и символьный! и только что начали изучать операторы сложения, сравнения копирования,длину строки,удаление,замена,подстрока,числа и строки! вообщем это у нас новая тема! Прошу как можно проще! вот такая задача! Проверить, является ли введеное слово полиндромом(перевертышем) например казак как ни читай оно и будет казак, или шалаш вообщем это слова перевертыши! ЗА РАНЕЕ БЛАГОДАРЕН! |
| Автор: THandle 13.5.2008, 22:28 |
| http://forum.vingrad.ru/faq/topic-202745.html Добавлено через 26 секунд Совсем чуть чуть переделать под Паскаль там... |
| Автор: xF1x 13.5.2008, 22:30 |
| Что то там вообще не понятно! нельзя ли сделать попроще и в одном коде а не в нескольких собирать! |
| Автор: neic 13.5.2008, 23:38 | ||
| xF1x Чего не понятного-то?
|
| Автор: xF1x 14.5.2008, 09:14 |
| В не можешь пояснить следующие строчки а то я вроде такого еще не изучал! function IsPalindrome ispalindrome := false; repeat |
| Автор: Rodman 14.5.2008, 10:08 |
| function IsPalindrome - объявление функции IsPalindrome ispalindrome := false; - фукция возвращает значение через свое имя... т.е. мы присваеваем имени функции значение, а уже функция его далее пепередает repeat - цикл с постусловием... удобен если хотябы раз необходимо в цикл зайти! |
| Автор: THandle 14.5.2008, 10:25 | ||||||||||||||||
Поясняю:
Функция которая будет проверять является ли слово полиндромом или нет. Теперь, что происходит внутри этой функции:
Присваиваем переменной i единицу, а переменной j - длину переданной в функцию строки.
Присваиваем результату функции false, то есть слово палиндромом не является. Теперь запускаем цикл:
Идем в нем от начала строки до середины и от конца строки тоже до середины. Например, возьмем слово топот, которое является палиндромом. В самом начале переменные i, j равны единице и пяти соответственно. Теперь смотрим что происходит во время цикла: 1. сравниваются буквы топот. Они одинаковы поэтому мы не выходим из функции возвращая результат о том, что слово не палиндром, а идем дальше: i = 1. j = 5. 2. На этом шаге сикла проверяем буквы: топот. Они тоже равны. Идем дальше. i = 2. j = 4. 3. На этом шаге сравниваем букву топот ней же самой. Идем дальше. i = 3. j = 3. 4. Условием выхода из цикла является:
Посмотрим же чему у нас равны переменные i и j: i = 4. j = 2. Все. Цикл завершен, слово палиндром. Спокойно присваиваем результату значение true:
Если бы в функцию поступило слово, в котором какието противоположные буквы не равны, то мы просто вышли бы из цикла и строчка
просто не выполнилась бы, а значит функция вернула бы false что соответствует слову-непалиндрому. |
| Автор: xF1x 14.5.2008, 10:25 |
| Слушай! а нельзя никак по другому сделать? мы счетчик делали i:=i+1 просто мы такого еще не изучали, попроще нельзя? |
| Автор: THandle 14.5.2008, 10:33 | ||||||||||||
| Возьмем например слово папа, которое палиндромом не является: 1. перед выполнением цикла переменным i, j присваиваются следующие значения: i = 1. j = 4. 2. Запускаем цикл, сравниваем буквы: папа. Они не равны, выходим из функции. Результат выполнения функции - false. Далее следует стандартная паскалевская программка, с вводом строки
Ну давай уж все объясню, раз начал
Объявляем переменную s, в которую и будем вводить слово которое будем проверять на палиндромность.
Вводим слово с клавиатуры.
Если слово - палиндром то пишем это, иначе сообщаем об обратном:
И последнее:
Ждем ввода чего-то с клавиатуры и нажатия клавиши Enter. Выходим из программы. Добавлено через 1 минуту и 38 секунд xF1x, что конкретно не изучали? какие строки не понятны? Можно и по-другому сделать, но это самый хороший вариант, по моему. Да и самый понятный должен быть. |
| Автор: ama_kid 14.5.2008, 10:36 | ||
можно примерно так:
|
| Автор: xF1x 14.5.2008, 10:41 |
| Не понятно что такое + s + ? а паскаль разве уже знает что IsPalindrome это палиндром!? ты же не задавал его в переменных |
| Автор: xF1x 14.5.2008, 10:51 |
| Вообщем объясняю! мы делали через цикл.потом через if then.ничего не делили и слово function у нас не было, repeat тоже не было ,был цикл i:=i+1! нельзя сделать с использованием этой информации? |
| Автор: THandle 14.5.2008, 11:01 | ||
Добавлено через 34 секунды Так пойдет? |
| Автор: xF1x 14.5.2008, 11:05 |
| вот так как надо!!а что такое break? |
| Автор: THandle 14.5.2008, 11:07 | ||
Моментальный выход из цикла, чтобы лишний раз дальше не гнать. Можно и так сделать:
Но так программа будет дольше работать |
| Автор: ama_kid 14.5.2008, 11:13 |
| Рекомендую только проверить, что будет с программой при i=length(s)... |
| Автор: THandle 14.5.2008, 11:17 |
Да, согласен, ошибочка будет. |
| Автор: ama_kid 14.5.2008, 11:19 | ||||
|
| Автор: THandle 14.5.2008, 11:24 | ||||
Насчет этого в курсе. Ну пусть финальный вариант будет таким:
|
| Автор: xF1x 14.5.2008, 19:41 |
| Спасибо огромное! ВСЕ ПОНЯТНО! НЕ пойму я что такое + s + никак подругому нельзя? а то ваще не пойму что это! |
| Автор: THandle 14.5.2008, 20:12 |
| xF1x, это мы выводим какой то текст, в нашем случае "word", после него введенный с клавиатуры текст, а далее текст о том является ли слово палиндромом или нет. Это просто информация. |
| Автор: xF1x 14.5.2008, 20:18 |
| все понятно, значит и без него! можно! ПАРНИ СПАСИБО ОГРОМНОЕ ВЫРУЧИЛИ! |
| Автор: THandle 14.5.2008, 20:26 |
| xF1x, пометь тему как решенную |