![]() |
|
#1
|
|||
|
|||
![]() Описать рекурсивную логическую функцию sim(s:string;i,j:integer) проверки на симметричность части строки от i-го до j-го элемента.Ума не приложу как это сделать((
![]() ![]() |
#2
|
|||
|
|||
![]() А что значит симметричность?
|
#3
|
|||
|
|||
![]() Да, действительно несовсем понятно что имел ввиду автор вопроса, но вот как вариант, единственное решение которое пришло мне на ум)
Код:
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
|
|||
|
|||
![]() Ну я насколько понял дается допустим слово , "информатика" ,задается ..ну пусть от 3 до 8 , т.е. "формат" остается... не симметрично, или взято допустим , "мама" от 1 до 3 , "мам" - симметрично...думаю такая тема... я просто убей не пойму как такую функцию описать ((
|
#5
|
|||
|
|||
![]() Код:
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
|
|||
|
|||
![]() Результат работы и первого и второго из предложенных вариантов - одинаков.
|
#7
|
|||
|
|||
![]() Прикиньте)) во все офигенно,но почему то ... прога выдает неправильный результат...(( вот код
Код:
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. |
#8
|
|||
|
|||
![]() Используй функцию что я написал, она работает верно.. проверил..
|
#9
|
|||
|
|||
![]() Гы, функции одинаковы до безобразия. Скорее всего там одна из 'c' русская, а вторая - английская.
|