1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Pascal: Kombination Stapel - Schlange

    • Frage
  • Johannes123
  • 1. Mai 2008 um 14:29
  • Unerledigt
  • Johannes123
    3
    Johannes123
    Mitglied
    Punkte
    95
    Beiträge
    13
    • 1. Mai 2008 um 14:29
    • #1

    Hallo!

    Ich stehe vor folgendem Problem:
    Ich soll ein Programm schreiben, das die Datentypen statischer Stapel und statische Schlange in einem Programm mit einbindet...
    Fragt bitte nicht nach dem Sinn eines solchen Programms (ich weiß auch noch nicht so recht was das bringen soll).
    Vielleicht kann mir jemand ein paar Tipps zur Realisierung geben oder wenn's geht ein Programm, das die einfachen Grundoperationen besitzt, mal hier reinposten. Das wäre eine große Hilfe!

    Danke schon mal!

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 1. Mai 2008 um 14:38
    • #2

    Hm, mal abgesehen davon, dass hier wieder nur halbe Informationen angegeben werden (zB. welche Programmiersprache?), dürften vl. die Stichwörter Stack (Stapel) und Queue (Schlange) aufschlussreicher sein. Google leistet sicher auch seinen eigenen Beitrag nun dazu.

    Und was es bringt bzw. was der Unterschied ist:

    • Stapel: LIFO (last-in, first-out)
    • Queue: FIFO (first-in, first-out)
  • Johannes123
    3
    Johannes123
    Mitglied
    Punkte
    95
    Beiträge
    13
    • 1. Mai 2008 um 17:02
    • #3

    Ja, hallo nochmal!

    Programm = siehe Überschrift (also Pascal)!


    Also das mit Lifo und fifo ist mir bekannt...
    nur wie kann ich jetzt "Stack" und "Queue" in einem Programm verwenden?
    Was muss ich im Programmkopf beachten? Muss ich Queue und Stack separat deklarieren?
    Und dann den Rest des Programms in Prozeduren realisieren (also für Stack und Queue getrennte Prozeduren )? Oder wie sieht das aus?

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 1. Mai 2008 um 17:06
    • #4

    Oh sorry, vielmals. Dachte mir vorhin schon, dass ich doch vermeintlich eine Programmiersprache gelesen hätte.

    Jedenfalls .. eine simple Googlesuche würde schon ausreichen, um einige Tutorials (zB. Learn Pascal Programming) oder Anleitungen zu finden.

  • Johannes123
    3
    Johannes123
    Mitglied
    Punkte
    95
    Beiträge
    13
    • 2. Mai 2008 um 09:56
    • #5

    Google bringt mich da leider nicht weiter, da ich kein Programm finde das den Datentyp Stack und Queue gleichzeitig verwendet....
    also ich weiß ja wie man ein Programm schreibt, in welchem man einen der beiden Datentypen verwendet, aber eben nicht zwei gleichzeitig :frowning_face:

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 2. Mai 2008 um 10:11
    • #6

    Servus!

    Sei mir nicht bös, aber du hast noch nie mehr als 2 Variablen in einem Programm verwendet?

    Ich kenne zu dem deine Aufgabenstellung nicht, aber wenn du nur die Arbeitsweise von Stack und Queue zeigen sollst, dann wäre vl. sowas ausreichend:

    • im Hauptprogramm 2 Variablen mit Datentyp einmal Stack und einmal Queue definieren
    • Grundlegende Dinge (Hinzufügen, Löschen/Entnehmen, etc.) für jeden Datentyp zeigen. 5 Werte hernehmen, in Stack/Queue speichern und von dort wieder entnehmen sowie die entnommenen Werte ausgeben

    Ergebnisse, wenn du zB Zahlen in der Reihenfolge von 1 bis 5 zuerst speicherst und dann wieder entnimmst:

    Stack: 5,4,3,2,1
    Queue: 1,2,3,4,5

    That's it. Was soll daran ein Problem sein?

  • Johannes123
    3
    Johannes123
    Mitglied
    Punkte
    95
    Beiträge
    13
    • 3. Mai 2008 um 12:42
    • #7

    So hab hier mal ein Programm entworfen ABER ES Klappt net :frowning_face: Wenn jemand so nett wäre und die Fehler korrigieren würde...

    Zitat


    PROGRAM STAPELSCHLANGE;

    TYPE STACK=RECORD
    WERT:ARRAY[1..5] OF INTEGER;
    ENDE:0..5;
    END;

    QUEUE=RECORD
    WERT:ARRAY[1..5] OF INTEGER;
    ANFANG:1..5;
    ENDE:0..5;
    END;

    VAR STAPEL:STACK; SCHLANGE:QUEUE; Z:INTEGER;


    PROCEDURE STAPELINIT(STAP:STACK);
    BEGIN
    STAPEL.ENDE:=0;
    END;

    PROCEDURE PUSH(VAR STAP:STACK; ZAHL:INTEGER);
    BEGIN
    WITH STAP DO
    BEGIN
    ENDE:=ENDE+1;
    WERT[ENDE]:=ZAHL;
    END;
    END;

    PROCEDURE POP(VAR STAP:STACK; VAR ZAHL:INTEGER);
    BEGIN
    WITH STAP DO
    BEGIN
    ZAHL:=WERT[ENDE];
    ENDE:=ENDE-1;
    END;
    END;

    PROCEDURE STAPELAUFBAUEN(STAP:STACK; ZAHL:INTEGER);
    VAR I,N:INTEGER;
    BEGIN
    FOR I:=1 TO ZAHL DO
    BEGIN
    WRITELN('ZAHL EINGEBEN: '); READLN(N);
    PUSH(STAP,N);
    END;
    END;

    PROCEDURE STAPELZEIGEN(STAP:STACK);
    VAR HILF:STACK;
    BEGIN
    STAPELINIT(HILF);
    WHILE STAP.ENDE > 0 DO
    BEGIN
    POP(STAP,Z);
    WRITE(Z,' ');
    PUSH(HILF,Z);
    END;
    WHILE HILF.ENDE > 0 DO
    BEGIN
    POP(HILF,Z);
    PUSH(STAPEL,Z);
    END;
    END;

    PROCEDURE ENTER(SCHLANG:QUEUE; ZAHL:INTEGER);
    BEGIN
    WITH SCHLANG DO
    BEGIN
    ENDE:=ENDE+1;
    WERT[ENDE]:=ZAHL;
    END;
    END;

    PROCEDURE REMOVE(SCHLANG:QUEUE; ZAHL:INTEGER);
    VAR I:1..5;
    BEGIN
    WITH SCHLANG DO
    BEGIN
    ZAHL:=WERT[ANFANG];
    ANFANG:=ANFANG+1;
    FOR I:=ANFANG TO ENDE DO WERT[I-1]:=WERT[i];
    ANFANG:=ANFANG-1;
    ENDE:=ENDE-1;
    END;
    END;


    PROCEDURE SCHLANGEINIT(VAR SCHLANG:QUEUE);
    BEGIN
    WITH SCHLANG DO
    BEGIN
    ANFANG:=1;
    ENDE:=0;
    END;
    END;


    PROCEDURE SCHLANGEZEIGEN(SCHLANG:QUEUE);
    VAR I:1..5; J:INTEGER; HILF:QUEUE;
    BEGIN
    SCHLANGEINIT(HILF);
    WITH SCHLANGE DO
    BEGIN
    FOR I:=ANFANG TO ENDE DO
    BEGIN
    WRITE(WERT[ANFANG],' ');
    REMOVE(SCHLANGE,Z);
    ENTER(HILF,Z);
    END;
    END;
    END;


    BEGIN
    CLRSCR;
    STAPELINIT(STAPEL);
    STAPELAUFBAUEN(STAPEL,5);
    STAPELZEIGEN(STAPEL);
    WHILE STAPEL.ENDE > 0 DO
    BEGIN
    POP(STAPEL,Z);
    ENTER(SCHLANGE,Z);
    END;
    SCHLANGEZEIGEN(SCHLANGE);
    READLN;
    END.

    Alles anzeigen
  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung