Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Rund um die Programmierung ::  Allgemeine Frage zu I/O  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Unregistrierter





Beitrag Unregistrierter 17:14:52 12.06.2012   Titel:   Allgemeine Frage zu I/O            Zitieren

Hi,
ich muss eine Eingabe, die sowohl eine Datei- als auch eine User-Eingabe über Konsole sein kann, einlesen und diese in einem Stack (FIFO) speichern. Der Stack wird nun (schrittweise) ausgelesen und in einem globalen Puffer geschrieben. Wichtig: Der Puffer ist i. d. R. kleiner als der Stack! Wird nun der globale Puffer ausgelesen, dann soll dieselbe Reihenfolge wie beim Input gewährleistet sein. Gibt also der User "a, b, c, ..., z" ein, soll auch beim Buffer-Auslesen wieder "a, b, c, ..., z" rauskommen.
Hätte ich das Problem der manuellen User-Eingabe nicht, hätte ich die Datei von unten nach oben auslesen können, so dass die Eingabe dann in der richtigen Reihenfolge im Stack steht, aber mit manueller User-Eingabe geht das natürlich nicht.

Wie gehe ich nun am Besten vor?
Ich habe mal eine Skizze erstellt, um das Problem zu verdeutlichen.

Danke im Voraus!

L. G.
Steffo
Bashar
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17821
Beitrag Bashar Mitglied 17:17:35 12.06.2012   Titel:              Zitieren

Stack = LIFO
Queue = FIFO

Jetzt stell die Frage nochmal.

_________________
OSL♥
Shade Of Mine
Moderator

Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 19011
Beitrag Shade Of Mine Moderator 17:18:05 12.06.2012   Titel:              Zitieren

Ein Stack (LIFO!) ist die falsche Struktur. Nimm eine FIFO Struktur und fertig.

_________________
A language that doesn't affect the way you think about programming is not worth knowing.
Unregistrierter





Beitrag Unregistrierter 17:27:07 12.06.2012   Titel:              Zitieren

FIFO kam mir auch in den Sinn, aber 1. will ich jetzt nicht eine Queue implementieren (wir dürfen nur unsere eigenen Implementierungen benutzen), 2. Auf das Problem angesprochen, meinte mein Prof., dass es eine einfachere Möglichkeit gibt als eine Queue zu implementieren.
Genau die suche ich.

Ich könnte theoretisch die Eingabe in eine Datei schreiben und diese dann umgekehrt lesen...

L. G.
Steffo
Shade Of Mine
Moderator

Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 19011
Beitrag Shade Of Mine Moderator 17:38:04 12.06.2012   Titel:              Zitieren

Steffo schrieb:
FIFO kam mir auch in den Sinn, aber 1. will ich jetzt nicht eine Queue implementieren (wir dürfen nur unsere eigenen Implementierungen benutzen), 2. Auf das Problem angesprochen, meinte mein Prof., dass es eine einfachere Möglichkeit gibt als eine Queue zu implementieren.


Dann brauchen wir mehr Infos. Eine Queue ist eine klassische FIFO-Struktur und hier ziemlich ideal.

Laut deiner Beschreibung hast du aber schon eine Queue im Einsatz.
Zitat:

Der Stack wird nun (schrittweise) ausgelesen und in einem globalen Puffer geschrieben. Wichtig: Der Puffer ist i. d. R. kleiner als der Stack! Wird nun der globale Puffer ausgelesen, dann soll dieselbe Reihenfolge wie beim Input gewährleistet sein.

Diesen Buffer verwendest du ja wie eine FIFO Struktur.

_________________
A language that doesn't affect the way you think about programming is not worth knowing.
Unregistrierter





Beitrag Unregistrierter 17:48:23 12.06.2012   Titel:              Zitieren

Verdammt, ich meinte LIFO wird von mir momentan verwendet!
Viel mehr gibt es eigentlich nicht zu sagen, außer, dass der Puffer parallel beschrieben und ausgelesen wird (das Einlesen der Datei/Eingabe in den Stack erfolgt aber sequenziell), aber diese Info wollte ich euch eigentlich vorenthalten, da das mein Problem sein soll.
Bashar
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17821
Beitrag Bashar Mitglied 17:54:26 12.06.2012   Titel:              Zitieren

Eine Queue kann man mit zwei Stacks nachbilden: Einfügen immer in Stack 1, Herausnehmen aus Stack 2. Ist Stack 2 leer, einmal Stack 1 komplett nach Stack 2 umschaufeln.

Ob du das brauchst, keine Ahnung. Kann man nicht wissen bei der dürftigen Informationslage.

_________________
OSL♥
knivil
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.02.2009
Beiträge: 6001
Beitrag knivil Mitglied 17:56:18 12.06.2012   Titel:              Zitieren

Also sowas wie Producer und Consumer?

_________________
If it were not for laughter, there would be no Tao.
Sie können einen Beitrag nicht so schnell nach Ihrem letzten absenden, bitte warten Sie einen Augenblick.
Unregistrierter





Beitrag Unregistrierter 18:12:54 12.06.2012   Titel:              Zitieren

knivil schrieb:
Also sowas wie Producer und Consumer?

Genau das.
@Bashar: Ich machs wohl so, thx!
knivil
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.02.2009
Beiträge: 6001
Beitrag knivil Mitglied 18:51:05 12.06.2012   Titel:              Zitieren

Du must doch nur deinen Buffer vor gemeinsamen Zugriff schuetzen.

_________________
If it were not for laughter, there would be no Tao.
Sie können einen Beitrag nicht so schnell nach Ihrem letzten absenden, bitte warten Sie einen Augenblick.
c++.de :: Rund um die Programmierung ::  Allgemeine Frage zu I/O  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.