Создадим программу на Windows Forms которая поможет нам определить, является ли палиндромом введённый текст, слово или число.
Создадим простенький дизайн:
Здесь у нас TextBox, Label и Button. Вердикт о принадлежности или непринадлежности данных к палиндрому мы выведен в MessageBox’е.
Дважды щёлкаем на кнопку «Проверить текст» и переносимся в область кода, где будем творить.
1 2 |
string text = textBox1.Text; char[] obrtext = text.ToCharArray(); |
Для начала мы считываем строку, которую введёт пользователь и записываем её в переменную text. Затем мы создаём массив символов с типом char, чтобы по одному символу считать нашу строку. Благодаря этому мы в последствии перевернём введённый текст по символу в обратный порядок. Конвертируем текст из строкового формата в символьный массив благодаря .ToCharArray.
Теперь мы переворачиваем символы введённых данных в обратном порядке благодаря следующему методу:
1 |
Array.Reverse(obrtext); |
Иначе говоря, если пользователь ввёл в TextBox строку «12345», то данный метод позволяет по символам перевернуть его до «54321».
Пока что наша переменная записана в виде массива символов. Но сравнивать мы будем не символы, а строки. Поэтому мы объявим строку с инициализацией символами из нашего массива.
1 |
string finaltext = new string(obrtext); |
Теперь нам осталось лишь сравнить изначально введённую строку текста со строкой текста, которую мы перевернули. Если они равны, то введённые данные — палиндром.
1 2 3 4 5 6 7 8 |
if(text==finaltext) { MessageBox.Show("Данная запись является палиндромом"); } if (text!=finaltext) { MessageBox.Show("Данная запись не является палиндромом"); } |
Вот и всё, наша программа готова!
Скачать исходник
Поделиться в соц. сетях:
Что такое FinalText? Для чего он нужен?
finaltext — это переменная типа string (строковый тип, данные в котором представлены именно в виде строки а не, например, посимвольно).
Когда пользователь вводит какое-либо слово, оно записывается в строковую переменную text. Но строковой формат нельзя перевернуть задом наперед (то есть, например «12345» перевернуть в «54321»). Поэтому приходится конвертировать переменную text (и то, что в ней записано) в массив символов char (у нас это — переменная obrtext). В массиве char уже можно по одному символу перевернуть введенное пользователем слово, что мы и делаем.
Затем нам надо сравнить перевернутое слово с словом, введенным пользователем — переменной text. Однако нельзя сравнивать между собой переменные с разными типами данных(string и char). Поэтому мы создаем строковую переменную finaltext и как бы конвертируем символы из переменной obrtext обратно в строковой формат, записывая полученный результат в finaltext, чтобы потом сравнить его с содержимым переменной text.
Спасибо за урок! Подскажите пожалуйста, а что нужно добавить, что бы проверять только буквы, без пробела? Например фраза «милашка как шалим» будет определятся как не палиндром из-за пробелов.
И как знаки препинания игнорировать при проверке?
=)
После того, как взяли текст из textBox’а:
string text = textBox1.Text;
удалите из этой строки пробелы так:
text = text.Replace(» «, «»);
то есть пробелы заменятся на пустую строку. Аналогично можете убрать знаки препинания.
Большое спасибо! Полезный метод.