Avatar billede mr_ruggerio Nybegynder
11. marts 2002 - 18:49 Der er 9 kommentarer

Omvendt streng

Jeg er i gang med at lave en funktion, der givet en bestemt streng, viser den samme streng bagfra. F.eks. ruggerio -> oireggur. Jeg har forsøgt at lave funktionen ved brug af rekursion, men det virker ikk :( Funktionen returnerer bare den streng man gav den. Det er første gang jeg benytter mig af rekursion, så det er muligvis en latterlig n00b-fejl...

--

function ReverseString(streng: string; tegn: integer): string;
begin
if tegn = 1 then
  return:=streng[1]
else
  return:=streng[tegn] + ReverseString(copy(streng,1,tegn-1),tegn-1);
write(return);
end;

--

Det haster en smule... :)
Avatar billede morten_s Nybegynder
11. marts 2002 - 18:57 #1
Uden recursivtet

function vendStreng(IndStreng : String): String;
var
  i : Integer;
begin
  for i := 1 to length(indStreng) do
    result := indStreng[i] + result;
end;
Avatar billede morten_s Nybegynder
11. marts 2002 - 18:57 #2
det var et svar
Avatar billede dkn Nybegynder
11. marts 2002 - 19:13 #3
ReverseString virker for mig, du kunne evt lige den ind i din unit som her:

function ReverseString(const AText: string): string;
var
  I: Integer;
  P: PChar;
begin
  SetLength(Result, Length(AText));
  P := PChar(Result);
  for I := Length(AText) downto 1 do
  begin
    P^ := AText[I];
    Inc(P);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(ReverseString('ruggerio'));
end;
Avatar billede morten_s Nybegynder
11. marts 2002 - 19:17 #4
dkn> din er da heller ikke recursiv ?
Avatar billede dkn Nybegynder
11. marts 2002 - 19:22 #5
faktisk jo
Avatar billede morten_s Nybegynder
11. marts 2002 - 19:25 #6
for at være recursiv skal den vil kalde sig selv det kan jeg ikke lige se hvor du gør ?
Avatar billede dj Nybegynder
11. marts 2002 - 20:23 #7
function ReverseString(streng: string): string;
  function RevString(streng: string; tegn: integer): string;
  begin
  if tegn = 1 then
    result := streng[1]
  else
    result := streng[tegn] + RevString(streng,tegn-1);
  end;
begin
  result := RevString(streng,length(streng));
end;

Her er så den recursive udgave, da jeg går ud fra det var recursion du var interesseret i og ikke decideret løsningen af opgaven (at vende en streng).

//DJ
Avatar billede sfreak Nybegynder
12. marts 2002 - 11:32 #8
Hey, cooolll.... jeg skulle ellers lige til at oprette et spm om, hvorledes man laver et program, der udskriver teksten spejlvendt, men her er svaret åbentbart. Og, jo, dkn's eksempel ER rekursiv.
Avatar billede doc404 Novice
12. marts 2002 - 11:56 #9
sfreak...

dkn's er IKKE rekursiv, hvor imod dj glimrende eksempel er...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester