Wyszukiwanie palindromu


(Heezootoo) #1
program czypali;

uses crt;

var slowo:string;

i,j:byte;

dl,dl_s:byte;

pocz,kon:char;

rez:string;

begin

clrscr;

writeln('Podaj slowo');

readln(slowo);

dl:=length(slowo);

dl_s:=length(slowo);

kon:=slowo[dl_s];

for i:=1 to dl do

    pocz:=slowo[1];

    if pocz=kon then

      begin

      for j:=1 to i do

      pocz:=slowo[j];

      rez:=rez+pocz;


      end

    else kon:=slowo[i+1];

writeln(rez);

readln;

end.

Program ma znajdować palindrom i go wypisać. Ale mój wypisuje tylko początkową literę. Mógł by ktoś powiedzieć gdzie jest błąd i jak go zmodyfikować?


([alex]) #2

Błąd polega na tym że instrukcja rez:=rez+pocz; nie wykonuje się w pętle for j:=1 to i do tak jak pewnie oczekujesz.

Ale to nie naprawi tego algorytmu.

function czy_palindrom1(s:string):Boolean;p,k:integer;begin:=true;p=1;k=length(s);pk dobeginif s[p]s[k] then

(Heezootoo) #3

rozpoznawany ma być tylko jeden wyraz nie np. z całego zdania.

EDIT:

zrobiłem taki program który na ludzki rozum powinien chodzić a się zawiesza:

proprogram palindrom;

uses crt;

var i,j:byte;

    dl:byte;

    p,k:byte;

    s:string;

    pocz,kon:char;

    check:boolean;



    begin

    clrscr;

    writeln('Podaj slowo');

    readln(s);

    dl:=length(s);

    p:=1;

    k:=dl;

    check:=false;

    while p
    if s[p]<>s[k] then

    begin

    inc(p);

    dec(k);

    check:=false;

    end;

    if s[p]=s[k] then

    check:=true;

    if check=true then

    begin

    for i:=p to k do

    write(s[i]);

    end;


    readln;

    end.

pomóżcie coś z tym zrobić bo już nie mam pomysłów

Edit:

Już sobie poradziłem:)