Program pre DVA STREDY
Tento program pracuje, aj keď ma palindróm iba jeden stred, alebo dĺžku 2.
***
Palindróm...
Dnes sme začali niečo nové, je to palindróm. Palindróm je taký reťazec znakov, ktorý je aj odzadu aj odpredu to isté.
Program Palindrom
Nie je to ale program ktorý zistí či je zadaný reťazec palindrómom, ale v dlhom reťazci znakov nájde najdlhší palindróm a vypíše jeho dĺžku. Je to program pre palindrómy iba s JEDNÝM stredom, to znamená že palindróm má nepárny počet znakov, inak by to tento program nenašiel.
***
program palindrom;
uses Crt;
var i,l,n,max,d : integer;
sedi : boolean;
a : array [1..1000] of char;
begin
Clrscr;
write('Zadaj dlzku retazca: ');
readln(N);
write('Zadaj retazec: ');
for i:=1 to N do read(a[i]);
readln;
max:=1;
sedi:=true;
for i:=2 to N-1 do begin
l:=1;
d:=1;
sedi:=true;
while sedi=true do begin
if ((i-l)>0) AND ((i+l)<=N) then
if a[i-l]=a[i+l] then begin
d:=d+2; l:=l+1;
if max
else sedi:=false
else sedi:=false;
end;
end;
if max<>1 then writeln('Najdlhsi Palindrom ma dlzku: ',max)
else writeln('Palindrom sa tu nenachadza.');
readln;
end.
***
Tento program je tu.
Aplikácia je tu.
Tento program pracoval na princípe: Najprv načíta všetky znaky do poľa a. A potom vezme každý prvok medzi druhým a predposledným vrátane. Tvári sa, že tento prvok je stredom palindrómu a zisťuje či znaky okolo neho sú rovnaké, ak áno, tak dĺžka palindrómu je 3, potom sa pozrie na ďalšie 2 okolo neho a zistí či sú rovnaké, a tak ďalej. Dĺžku terajšieho palindrómu si ukladá do 'd', a potom ak d bude väčšie ako max, tak do max priradí 'd'.
—————
Tento program pracuje, aj keď ma palindróm iba jeden stred, alebo dĺžku 2.
***