Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.03.2010, 17:46
Burk Burk вне форума
Прохожий
 
Регистрация: 16.01.2010
Сообщения: 9
Репутация: 10
По умолчанию Описать функцию

Описать рекурсивную логическую функцию sim(s:string;i,j:integer) проверки на симметричность части строки от i-го до j-го элемента.Ума не приложу как это сделать(( помогите плиз,а то беда((
Ответить с цитированием
  #2  
Старый 04.03.2010, 18:17
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

А что значит симметричность?
Ответить с цитированием
  #3  
Старый 04.03.2010, 19:18
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Да, действительно несовсем понятно что имел ввиду автор вопроса, но вот как вариант, единственное решение которое пришло мне на ум)
Код:
function sim(const S:String; const i,j:integer):boolean;
begin
  Result:=(S[i] = S[j]);
  if (Result) and (i < j-1) then Result:=sim(S, i+1,j-1);
end;

Последний раз редактировалось Asinkrit, 04.03.2010 в 19:28.
Ответить с цитированием
  #4  
Старый 04.03.2010, 19:42
Burk Burk вне форума
Прохожий
 
Регистрация: 16.01.2010
Сообщения: 9
Репутация: 10
По умолчанию

Ну я насколько понял дается допустим слово , "информатика" ,задается ..ну пусть от 3 до 8 , т.е. "формат" остается... не симметрично, или взято допустим , "мама" от 1 до 3 , "мам" - симметрично...думаю такая тема... я просто убей не пойму как такую функцию описать ((
Ответить с цитированием
  #5  
Старый 04.03.2010, 20:11
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
function IsStrSim(S : String; i, j : Integer) : Boolean;
begin
  Result := S[i] = S[j];
  If j-i > 1 Then Result := Result And IsStrSim(S,i+1,j-1);
end;

ЗЫ. Проверки правильности параметров нету, если надо - сделай сам.
Ответить с цитированием
  #6  
Старый 04.03.2010, 20:29
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Результат работы и первого и второго из предложенных вариантов - одинаков.
Ответить с цитированием
  #7  
Старый 17.03.2010, 14:20
Burk Burk вне форума
Прохожий
 
Регистрация: 16.01.2010
Сообщения: 9
Репутация: 10
По умолчанию

Прикиньте)) во все офигенно,но почему то ... прога выдает неправильный результат...(( вот код
Код:
function sim( s: string; i,j: integer) : boolean ;
begin
result:=s[i]=s[j] ;
if ((j-1 > 1) then result:=result and isstrsim (s,i+1,j-1) ;
end;
procedure TForm1.Button1Click (Sender:TObject) ;
var i,j:integer;s:string; s2:boolean;
begin
s:= Edit1.Text ;
i:= Strtoint (Edit2.Text) ;
j:= Strtoint (Edit3.Text) ;
s2:= sim(s,i,j) ;
if s2 = true then Edit4.Text:= 'sim'
else
Edit4.Text:= 'not sim' ;
end;
end.
Короче абсолютно случайно наткнулся на пример неправильной работы: если ввести "ykcoc" и задать 3-5 ,то почему то результат not sim ... мне сказали что 100% ошибка в функции...ну я уже блин че тока не попробовал... все время чет не так...
Ответить с цитированием
  #8  
Старый 17.03.2010, 21:17
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Используй функцию что я написал, она работает верно.. проверил..
Ответить с цитированием
  #9  
Старый 18.03.2010, 00:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Гы, функции одинаковы до безобразия. Скорее всего там одна из 'c' русская, а вторая - английская.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025