Палиндром строка

bytemyass

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
a,b:byte;
begin
s:=Edit1.Text;
b:=0;
for a:=1 to length(s) div 2 do
if s[a] <> s[length(s)-a+1] then begin
edit2.text:='net';
b:=1;
break
end;
if b=0 then edit2.text:='plondrome';
 
end;
 
end.
Прошу объяснить как работает, начиная с b:=0, и до конца. Пожалуйста.
1 ответ

bytemyass

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
a,b:byte;
begin
s:=Edit1.Text;
b:=0; //пусть палиндром
for a:=1 to length(s) div 2 do//смотрим от начала до середины строки
if s[a] <> s[length(s)-a+1] then n//если символ, симметричный от конца не равен
 
edit2.text:='net';//не палиндром
b:=1; //фиксируем
break //выходим из цикла
end;
if b=0 then edit2.text:='plondrome';
 
end;
Можно написать так.
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    a,b:byte;
begin
s:=Edit1.Text;
b:=0; //пусть палиндром
a:=1;
while(a<=length(s) div 2 do)and(b=0) do//смотрим от начала до середины строки
if s[a] <> s[length(s)-a+1] then b:=1//если символ, симметричный от конца не равен
else inc(a);
if b=1 then edit2.text:='net'//не палиндром
else edit2.text:='plondrome';
end;