Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wortumkehr mit ADT Stapel (https://www.delphipraxis.net/131679-wortumkehr-mit-adt-stapel.html)

seppel19901 28. Mär 2009 19:32


Wortumkehr mit ADT Stapel
 
Hi Leute,

ich habe letztes Jahr mal ein Programm mit ADT - Stapel programmiert.

Dieses bestand aus 2 Editfenster und einen Button.

Es funktionierte so:

Editfenster 1: Eingabe eines Worts

Button: durch den Button wurde das Wort von hinten nach vorne gelesen

Editfenster 2: Ausgabe des Wortes Rückwärts.

Dieses Programm funktionierte mit Benutzung des ADT - Stapel.

Leider hab ich keine Ahnung mehr wie das Programm zu programmieren war.

Hat jemand das Programm rumliegen? Oder könnte mir den Quelltext schreiben?
Das Programm war in Delphi Win32


mfg

Klaus01 28. Mär 2009 20:13

Re: Wortumkehr mit ADT Stapel
 
Guten Abend,

was ist ein ADT Stapel?

[OT] lösche nie Sourcen, denn man könnte sie mal wieder gebrauchen [/OT]

Grüße
Klaus

seppel19901 28. Mär 2009 20:15

Re: Wortumkehr mit ADT Stapel
 
ADT Stapel ist ein Datentyp der sich aus der ADT Liste ergibt.

Oder hat jemand eine andere IDee wie das funktionieren könnte?

Klaus01 28. Mär 2009 20:17

Re: Wortumkehr mit ADT Stapel
 
Wofür steht das Akronym "ADT"?

Ansonsten würde das noch mit einem LIFO Stack gehen.
Oder mit einer For Schleife die den String von hinten abarbeitet.

Grüße
Klaus

Cyf 28. Mär 2009 20:18

Re: Wortumkehr mit ADT Stapel
 
Die Aufgabenstellung klingt sehr nach Schule, mein Lehrer hat auch die Neigung ADT für "abstrakter Datentyp" zu benutzen, es dürfte also ein Stack gemeint sein.
Wo genau das Problem? Deine Aufgabenstellung ist (suboptimal, aber wohl so gedacht) durch eine einfache rekursive Funktion zu lösen, bei der immer ein Buchstabe abgeschnitten wird.

[Edit]vertippt

seppel19901 28. Mär 2009 21:08

Re: Wortumkehr mit ADT Stapel
 
hab leider das Problem das ich seit ca. 1 1/2 Jahren nicht mehr mit Delphi programmiert habe. Nach Delphi kommt in der Schule Prolog und da ich von der 12. zurück in die 11. musste hab ich zur Zeit nur Prolog im Kopf und kann mich nicht mehr entscheiden wie ich das machen könnte. Bräuchte mal einen Anhaltspunkt von euch....

Cyf 28. Mär 2009 21:53

Re: Wortumkehr mit ADT Stapel
 
Du nimmst jeweils den letzten Buchstaben und übergibst rekursiv den um eins verkürzten String an deine Prozedur, als Abbruchbedingung für die Rekursion dient die Prüfung, ob ein Leerstring übergeben wird. Das ist natürlich die komplizierte Variante, aber ich denk mal es geht um Rekursion, ansonsten kannst du den String einfach rückwärts mit einer Schleife durchlaufen.
Da das Ganze ja irgendwie mit einem Stack gemacht werden soll, müsstest du den String nur vorwärts durchlaufen und jeden Buchstaben pushen und dann hinterher alles poppen. Was genau davon jetzt richtig ist, musst du wissen, hängt von deiner Aufgabenstellung ab.

DeathsShadow 28. Mär 2009 23:21

Re: Wortumkehr mit ADT Stapel
 
Hey :hi:

Ich würde es persöhnlich mit einer Schleife machen, Rekursion ist nicht so meins. Hier ist der Code den ich verwenden würde.

Delphi-Quellcode:
 
function Wortumkehr(Text : String) : String;
var i : integer;
begin
  Setlength(result,0);
  for i := length(Text) downto 1 do
  begin
    Setlength(result,length(result)+1);
    result[length(result)] := Text[i];
  end;
end;


procedure TForm1.Aufruf(Sender : TObject);
begin
Edit2.Text := Wortumkehr(Edit1.Text);
end;
Ich hab ihn frei getippt, deswegen können Tippfehler drin sein.


_______________
Lg Florian

Cyf 29. Mär 2009 09:36

Re: Wortumkehr mit ADT Stapel
 
Zitat:

Zitat von DeathsShadow
Delphi-Quellcode:
Setlength(result,0);
for i := length(Text) downto 1 do
begin
  Setlength(result,length(result)+1);
  result[length(result)] := Text[i];
end;

Davon sollte man wirklich absehen, wenn man die Länge kennt, dann SetLength einmal vorher aufrufen.

DeathsShadow 29. Mär 2009 23:18

Re: Wortumkehr mit ADT Stapel
 
Zitat:

Zitat von Cyf
Davon sollte man wirklich absehen, wenn man die Länge kennt, dann SetLength einmal vorher aufrufen.

Ok, du hast recht :D
das war ja auch nur ein Vorschlag für eine mögliche, allgemeine Form. Es geht aber wirklich eleganter.

____________________
Lg Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz