Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Палиндром, Найти в строке палиндром 
:(
    Опции темы
Zlo
Дата 19.9.2005, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: нет
Всего: 1



Товарищи помогите пожалуста, сил моих нет уже!
Есть строка длино 80 символов в ней есть полидром, как его (полидром) найти?

Для начала объясь если кто незнае полидром это слово читающееся однаково как справа налово так и лева направо.
Например: "1221" полидром.

Скажем есть строка

"цуенг1221укн" вот как в этой строке найти полидром?

Я сделал вот так но что-то у меня неполучаеться.

Код

Program stringi;
uses crt;
var 
find,pol:boolean;
i,j,k,iter:integer;
s,polidrom:string;

begin
    find:=false;
    pol:=false;
    writeln('Введите строку длинной 80 символов:');
    {readln(s);}
    s:='h1221k';
    {1221}
    for i:=1 to Length(s) do begin
      if ((s[i]='1') or (s[i]='2') or (s[i]='3') or (s[i]='4') or (s[i]='5') or (s[i]='6') or (s[i]='7')) then
        for j:=i+1 to Length(s) do begin
          if ((s[i]='1') or (s[i]='2') or (s[i]='3') or (s[i]='4') or (s[i]='5') or (s[i]='6') or (s[i]='7')) then 
            if s[i]=s[j] then begin
                iter:=0;
               for k:=i+1 to j do begin
                   iter:=iter+1;
                   if s[k]=s[j-iter] then pol:=true else break;
                   if ((k+1)=iter) then begin
                      polidrom:=Copy(s,i,k+iter);
                      Writeln(polidrom);
                      find:=true;
                      iter:=0;
                      break;
                   end;
               end;
            end;
        end;
        pol:=false;
    end;
    if find=false then Writeln('В строке нет ни одного полидрома!');
    readkey;
end.



Правда тут код на паскале, но думаю разница не большая!
PM MAIL   Вверх
p0s0l
Дата 19.9.2005, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: нет
Всего: 112



Код

Program stringi;

const
  MinLen = 3; // мин. длина полидрома (уменьшенная на 1)

var
  s, polidrom : string;
  i, j, k : integer;
  Found : boolean;

begin
  writeln('Введите строку длинной 80 символов:');
  readln(s);
//  s:='h1221k';
  for i := 1 to Length(s)-MinLen do
    for j := i + MinLen to Length(s) do
      if s[i] = s[j] then
      begin
        Found := True;
        for k := 1 to (j-i) div 2 do
          if s[i+k] <> s[j-k] then
          begin
            Found := False;
            Break;
          end;

        if Found then
        begin
          polidrom := Copy(s, i, j-i + 1);
          WriteLn('Полидром: ' + polidrom);
        end;
      end;
  ReadKey;
end.
Тут обрати внимание на константу MinLen... Если поставить MinLen = 1, то в строке 1221 программа найдет 2 полидрома:
1221
22



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 19.9.2005, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: нет
Всего: 112



Перенесено из раздела Дельфи


--------------------
С уважением, г-н Посол.
PM   Вверх
Akina
Дата 19.9.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Вообще-то правильно:

ПАЛИНДРОМ

На Паскале есть функция, аналогичная strreverse? Если нет - сделать... и потом проверять все подстроки от бОльших к меньшим на

str=strreverse(str)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 19.9.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 1
Всего: 68



Цитата(Akina @ 19.9.2005, 10:29)
На Паскале есть функция, аналогичная strreverse?

Нашел - ReverseString smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Zlo
Дата 19.9.2005, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004

Репутация: нет
Всего: 1



p0s0l
Пасибо огромное тебе всегда выручаешь!


~FoX~
Цитата
Цитата (Akina @ 19.9.2005, 10:29)
На Паскале есть функция, аналогичная strreverse?


Нашел - ReverseString 


А это че за ыункция такая?
PM MAIL   Вверх
~FoX~
Дата 20.9.2005, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 1
Всего: 68



Zlo
Возвращает строку в обратном порядкае.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.