Wątek przeniesiony 2015-11-18 20:10 z Delphi i Pascal przez furious programming.

Sprawdzenie czy słowo jest palindromem.

0

Witam mam napisać program, który sprawdza czy słowo jest palindromem. Teraz moje pytanie jak mam porównać słowo wpisane przez użytkownika czy jest takie same od tyłu ?
if (tekst = (jak zrobić żeby porównywał wyraz wpisany od tyłu?) then writeln('Jest palindromem') else writeln('Nie jest palindromem');

var
tekst:string;
tekst_od_tylu:string;
dlugosc:integer;
i:integer;
begin
writeln('Podaj tekst:');
readln(tekst);
dlugosc:=length(tekst);
for i:=dlugosc downto 1 do write(tekst[i]);
readln;

end.
0

google. takich programów jest w google multum.

0

@morodis:

uses  StrUtils, SysUtils;
var
tekst:string;
tekst_od_tylu:string;
begin
writeln('Podaj tekst:');
readln(tekst);
tekst_od_tylu := AnsiReverseString(tekst);
if SameText(tekst,tekst_od_tylu) then
  writeln('Jest')
else
  writeln('Nie jest'); 
end.

To jest oczywiście tylko przykład dla pojedynczego wyrazu ewentualnie wyrażeń typu oko w oko. W pozostałych przypadkach trzeba pokombinować i ja bym użył Pos oraz Copy prócz tego co podałem wyżej.

0

@morodis - przede wszystkim wątki dotyczące podstaw zakładaj w tym dziale, czyli Newbie;


Co do tematu - wystarczy jedna pętla, jeden iterator i jedna zmienna z długością słowa, nic więcej; Nie potrzebujesz wcale kopii całego łańcucha, bo możesz porównywać poszczególne literki właśnie w pętli; To akurat jeśli o ASCII/ANSI chodzi, bo z UTF-8 już tak łatwo nie będzie :]

Przykład:

var
  strInput: AnsiString;
  intLen, intCharIdx: Integer;
  boolResult: Boolean = True;
begin
  Write('Enter the word: ');
  ReadLn(strInput);

  intLen := Length(strInput);

  for intCharIdx := 1 to intLen div 2 do  // lub intLen shr 1
    if strInput[intCharIdx] <> strInput[intLen - intCharIdx + 1] then
    begin
      boolResult := False;
      Break;
    end;

  if boolResult then
    Write('word is a palindrome')
  else
    Write('word is not a palindrome');

  ReadLn();
end.

Kod trochę dłuższy, ale to z racji pętli, której raczej nie trzeba tłumaczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1