Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 17:19   #1
rrrl
Новичок
Джуниор
 
Регистрация: 30.05.2010
Сообщений: 2
По умолчанию Проверить является ли строка палиндромом.

Приветствую всех участников форума и прошу у вас помощи.

Задача состоит в следующем:
нужно проверить строку, является ли она палиндромом, используя строку заменитель и функцию Replace состоящюю из пробелов и знаков препинания.
Палиндром - это слова, числа, предложения читающиеся одинакова как слева напрово, так и справа на налево.

Ниже код программы, но в цикле видимо что-то не так. В итоге переменная NewText2 содержит только результат последней итерации цикла, то есть замены "," на "".
Подскажите, что не так?


Код:
Private Sub CommandButton1_Click()

Dim NewText1, NewText2, Change, Re As String
Dim i, n, k As Integer

NewText1 = LCase(TextBox1)           'преобразуем строку в строчные буквы
  
n = Len(NewText1)                    'количество символов в строке 

Change = " .,"                       'строка заменитель
k = Len(Change)                      'количество символов в строке-заменителе

For i = 1 To k
Re = Mid(Change, i, 1)               'выдергиваем из строки-заменителя символ
NewText2 = Replace(NewText1, re, "") 'заменяем символ-заменитель на ""
Next i
Worksheets("Лист1").Cells(2, 1) = NewText2

If NewText2 = StrReverse(NewText2) Then 'сравниваем строки 
   MsgBox "Палиндром"
Else
   MsgBox "Не палиндром"
End If

End Sub
rrrl вне форума Ответить с цитированием
Старый 30.05.2010, 17:46   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Попробуйте так

Код:
Private Sub CommandButton1_Click()

Dim NewText1, NewText2, Change, Re As String
Dim i, n, k As Integer

NewText1 = LCase(TextBox1)           'преобразуем строку в строчные буквы
  
NewText2 = Replace(NewText1, ".", "")
NewText2 = Replace(NewText2, ",", "")
NewText2 = Replace(NewText2, " ", "")


Worksheets("Лист1").Cells(2, 1) = NewText2

If NewText2 = StrReverse(NewText2) Then 'сравниваем строки 
   MsgBox "Палиндром"
Else
   MsgBox "Не палиндром"
End If

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 30.05.2010, 18:33   #3
rrrl
Новичок
Джуниор
 
Регистрация: 30.05.2010
Сообщений: 2
По умолчанию

Спасибо за ответ.
Нужно было применять цикл. Но я уже разобрался
rrrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить, является ли число палиндромом Princesse JavaScript, Ajax 9 02.10.2009 00:23
Как проверить является ли числом? killer12rus JavaScript, Ajax 1 18.05.2009 05:09
Проверить, является ли заданная строка симметричной. - Ассемблер VHomer Помощь студентам 3 27.12.2008 19:37
Определить, является ли заданная строка правильной записью вещественного числа Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 2 18.10.2007 16:53