![]() |
Einführung Stack Klasse 12
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo! Ich muss es leider hier nochmal versuche, habe gerade im falschen Forum gepostet!
Im Info Grunskurs Klasse 12 sollen wir einen ADT Stack programmieren. Dieser soll aussehen wie im Anhang.Das ganze Programm soll sich auf 2 Units stützen, der Oberfläche und der unit Stack. Den einzigen Hinweis, den wir bekommen haben sind die Befehle push, pop, init und top, sowie die function empty. Ich habe aber keinerlei Ahnung wie diese aufgerufen werden, bzw. wie ich die beiden units veknüpfen soll. Meinen ersten Versuch könnt ihr ja im Anhang bewundern. Bitte helft mir weiter, ich finde auch nix zum Nachlesen (das Meiste verstehe ich nicht!!!) |
Re: Einführung Stack Klasse 12
Zitat:
![]() Und, ganz ehrlich: Das hätte man über Google finden können. Und wenn du das nicht verstehst... Nun ja, bei konkreten Fragen helfen wir dir gerne weiter. Die Grundlagen musst du dir schon selbst aneignen. |
Re: Einführung Stack Klasse 12
Zitat:
|
Re: Einführung Stack Klasse 12
okay...gut
also erstmal weiß ich nicht wie ich die typendeklaration mache!
Delphi-Quellcode:
so hab ich es mir gedacht, aber es funktioniert nicht. iuch brauche einen array, aber es sollte auch ein typ sein meinte die lehrerin. Wie wird das nun richtig deklariert? Ich bastel schon immerzu rum aber komm nich auf die Lösung!
type st:array[1..5] of integer;
private stackpointer, zahl, a:integer; private procedure Init(var ST:integer); procedure Push(var ST:integer; zahl:integer); procedure Top (var ST:integer; zahl:integer); procedure Pop (var ST:integer; zahl:integer); |
Re: Einführung Stack Klasse 12
So wie du das machst vermischst du Klassendeklarationen bzw. Record-Deklarationen mit normalen Typendeklarationen.
Kannst dir ja auch ein Record machen was die Proceduren und Parameter bereitstellt bzw. das ganze mit einer Klasse lösen. Ansonsten kannst du dir ja mal die Sourcen von der Klasse TStack anschauen, welche glaube ich in neuen Delphiversionen schon mitgeliefert wird. |
Re: Einführung Stack Klasse 12
ich weiß jetzt nicht was ich machen soll^^ kannst du mir vll ein ansatz geben?
|
Re: Einführung Stack Klasse 12
|
Re: Einführung Stack Klasse 12
für den Anfang reicht es vielleicht schon, mal in die OH "record" einzutippen, ansonsten
![]() |
Re: Einführung Stack Klasse 12
Besser wäre es aber den Crashkurs von Anfang an durchzuarbeiten und zu überprüfen, ob ihm die Grundlagen geläufig sind.
|
Re: Einführung Stack Klasse 12
|
Re: Einführung Stack Klasse 12
Zitat:
//Edit: So es sich denn um ihn, und nicht einen Schulkameraden handelt. Hat man ja auch öfters... ;) |
Re: Einführung Stack Klasse 12
Ist ja schön wenn jemand mal nett sein kann^^ So habe jetzt alles durchgelesen und bin auch weiter gekommen. Habe nur noch ein Problem in der procedure Push, da irgendwie der wert nicht auf das array gespeichert wird.
Delphi-Quellcode:
Hat jemand ne Idee zu dem Problem a[stackpointer]:=zahl;?
unit Stack;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type st = array [1..5] of Integer; var a: ^st; stackpointer, zahl: Integer; procedure Init(var ST:integer); procedure Push(zahl:integer); procedure Top (zahl:integer); procedure Pop (zahl:integer); implementation procedure Init; begin stackpointer:=0; end; procedure Push(zahl:integer); begin if(stackpointer < 5) then begin Inc(stackpointer); a[stackpointer]:=zahl; end; end; procedure Top(zahl:integer); begin if(stackpointer > 0) then begin a[stackpointer]:=zahl; end; end; procedure Pop; begin if stackpointer=0 then exit; a[stackpointer]:=a[stackpointer-1]; end; end. |
Re: Einführung Stack Klasse 12
Wieso ist a ein Zeiger auf das Array?
|
Re: Einführung Stack Klasse 12
Ich hab doch gar kein Zeiger....oder?
|
Re: Einführung Stack Klasse 12
:roll:
Delphi-Quellcode:
var
a: ^st; //<= Zeiger auf st |
Re: Einführung Stack Klasse 12
wusst ich gar nicht, immer wenn ich das ohne dieses a gemacht habe bekam ich den fehler: Array-Typ erforderlich. Deshalb das a.
Achso...das "^" muss weg, dann klappts. |
Re: Einführung Stack Klasse 12
Zuerst eine Frage: was kannst du inzwischen? Wie sind deine Programmierkenntnisse?
Delphi-Quellcode:
Willst du nur kopieren oder verstehst du auch den Sinn der Units. Du machst dir das aber einfach. Also, räum auf. Lösch zuerst alles, starte das Programm und wenn der Compiler eine unbekannte Funktion meldet, dann drückst du auf F1 und guckst in welcher Unit die Funktion, Prozedur oder Klasse usw. ist.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Delphi-Quellcode:
Entschuldige, aber das sieht aus ob es irgendwo kopiert wurde ohne zu wissen wozu.
type
st = array [1..5] of Integer; var a: ^st; Ich hab mir den Rest nicht angeguckt, aber wieso nicht:
Delphi-Quellcode:
var
a: array [1..5] of Integer; |
Re: Einführung Stack Klasse 12
Zitat:
|
Re: Einführung Stack Klasse 12
so klappt alles, bloß ich finde keine wirkliche antwort darauf, was dir procedure TOP erledigen soll. und jetzt bleibt mal locker, ich hab seit 6 monaten n bissl delphi unterricht und wir machen nicht wirklich viel. also ein bischen verständnis bitte.
|
Re: Einführung Stack Klasse 12
Zitat:
In der Oberstufe kann man schon ein wenig Eigeninitiative Verlangen. Du hast die Begriffe "Stack" und "Pop". Meinst du nicht, dass, wenn du Google mal ganz liebt fragst, es dir ein paar grundlegende Antworten liefert? Sorry, aber wenn du nur halbherzig an die Sachen gehen willst, dann hat keiner was davon... |
Re: Einführung Stack Klasse 12
ich google jetzt 15min nach stack top, delphi top, usw...kannst nich einfach mal weiterlinken wenn du ne seite weißt?
|
Re: Einführung Stack Klasse 12
Hab ich schon.
|
Re: Einführung Stack Klasse 12
|
Re: Einführung Stack Klasse 12
http://en.wikipedia.org/wiki/Stack_(data_structure)
..... 15 minuten? ich hab 20 sekunden gebraucht edit: mist da tippt jemand schneller xD |
Re: Einführung Stack Klasse 12
also ist top nur das obere ende des stacks, also die spitze. aber was soll man da programmieren, ich mein ich gehe doch nicht runter oder...häää?
|
Re: Einführung Stack Klasse 12
Zitat:
Und meinen Link hast du dir leider immer noch nicht genauer angesehen... |
Re: Einführung Stack Klasse 12
Im Speicher stapelt der Stack nach unten. Deshalb sprechen manche auch von einem Keller(-speicher)
|
Re: Einführung Stack Klasse 12
Zitat:
Deine Aufgabe ist in drei Minuten programmiert, aber wenn du dir etwas Mühe gemacht hättest und den Link zum Crosposting geklickt hättest, dann hättest du mein Beispiel bemerkt. Wenn man die Funktion und Prozedur umbenennt und noch zwei weitere Funktionen für dein Int und Top progen würde, was in 30 Sekunden erledigt wäre, dann hättest du deine Antwort bereits vor sechs Stunden gehabt. Ich helfe gerne, aber ich laufe nicht hinterher. |
Re: Einführung Stack Klasse 12
@Razor90
Geh diesen Thread nochmal vom 2. Post an durch. Da sind inzwischen 2 sehr gute Links genannt worden, die den Stack sehr gut beschreiben. Auch die typischen Funktionen eines Stack, wie z.B. Top. Ja, der Ton wird im Thread wieder etwas aggressiver, aber das liegt daran, das bisher gebotene Hilfe "überlesen" wurde. Ich weis, dass Du gerne ein Code-Beispiel hättest. Aber das setzt voraus, das es jemand schreiben will. Aber auch eine Quelle für ein vollständiges Code-beispiel für TStack steht schon in diesem Thread. €: Red-Box, aber was geschrieben werden muss... ;) |
Re: Einführung Stack Klasse 12
Zitat:
|
Re: Einführung Stack Klasse 12
nur mal so am Rande...ich habe alles gelesen, aber von diesem 1 mal, merkt man sich doch nichts! das sind so viele informationen. wenn ihr euch das behalten könnt, dann freu ich mich für euch.
|
Re: Einführung Stack Klasse 12
Dann hast du dir sicher auch schon das Programm runtergeladen, was ich dir indirekt verlinkt habe, oder? Zumindest das könntest du dir schon ansehen. Da sind die Prozeduren drinne, die du brauchst. Das meinte ich mit genauer angucken.
Zitat:
Zitat:
|
Re: Einführung Stack Klasse 12
Dann hast Du das mit den Referenz-Links aber falsch verstanden. Der Text da ist nicht zum auswendig lernen, das ist eine Beschreibung und eine spätere Referenz.
Im ersten geposteten ![]() |
Re: Einführung Stack Klasse 12
So, nochmal zum Mitschreiben: ein Stack ist ein Stapelspeicher. Stell Dir eine unten geschlossene Röhre vor, die im Innendurchmesser dem eines Eurostückes entspricht. Am Anfang ist diese Röhre leer (empty). Nun wirfst Du ein Eurostück hinein (push). Zuoberst (top) liegt nun dieses Eurostück. Nun wirfst Du noch eins hinein, dadurch ist dies natürlich dann das oberste (top). Wenn Du jetzt eins herunternimmst (pop), ist dies logischerweise das zuletzt eingeworfene und das oberste ist wieder das zuerst eingeworfene. Nimmst Du dieses nun auch noch herunter, ist der Stapel wieder leer. Ist doch ganz einfach, oder nicht?
|
Re: Einführung Stack Klasse 12
das habe ich verstanden, nur mit dem top war mir nicht klar was gemeint, also ist es das oberste element. hiermit konnte ich nichts anfangen: top: Stapel --> Element
|
Re: Einführung Stack Klasse 12
Ein Stack für "Arme" ist auch mein Quick&Dirty Stack für Integer, den nehme, wenn ich keine Prüfungen brauche, sondern schnellen Zugriff.
Evtl. hilft die einfache Programmierung ja, den Sinn der einzelnen Funktion zu verstehen:
Delphi-Quellcode:
type
TStack = array[0..1000] of Integer; // Stack für 1001 Integer Werte var Stack : TStack; StackPos : Integer = -1; procedure StackPush(i : Integer); begin inc(StackPos); Stack[StackPos] := i; end; function StackPop : Integer; begin Result := Stack[StackPos]; dec(StackPos); end; function StackTop : Integer; begin Result := Stack[StackPos]; end; function StackEmpty : Boolean; begin Result := StackPos < 0; end; |
Re: Einführung Stack Klasse 12
Er braucht nur 5 Werte, also sollte man nicht übertreiben mit dem Array. Lieber nur 5 Werte und alles darüber ins Nichts schicken, also daß der Stack immer voller wird und der sich dann wundert wieso in seinen Edit1 bis Edit5 der Stack nicht abgebaut wird.
//EDIT: Ich hab mir gerade diese Seite angeguckt: ![]() Das steht etwas von Klasse. Braucht Razor90 also jetzt eine Klasse oder reichen Funktionen und Prozeduren? |
Re: Einführung Stack Klasse 12
Das war nur ein Copy&Paste aus einer Unit ;) Hab' nur eine um 1‰ falsche Bemerkung angepasst
|
Re: Einführung Stack Klasse 12
Zitat:
Also bin ich in der Regel auch nicht so kleinlich und helfe gerne, bzw. helfe ich erst ein mal. Erst dann beobachte ich die Reaktion. Kommt nichts, fehlt jede Eigeninitiative oder wird in Zukunft nur ständig gefragt und man merkt, es ist ein Copy&Paste Typ, dann kann man sich immer noch überlegen den Aufwand zu reduzieren. |
Re: Einführung Stack Klasse 12
Nur dass es in diesem Falle von vornherein klar ist, dass es sich um eine Schulaufgabe handelt. Und von unmöglichen Deadlines in der Schule... sagen wir mal so: Gibt's eher selten. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz