Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe bei aufgabe !!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.06.2005, 17:45 Uhr
Xanthi24



Hallo alle zusammen!!danke erstmal für den 1.tip den ich von euch bekommen habe war echt spitze!!!


bräuchte hilfe bei dieser aufgabe !!weiß gar nicht was ich da machen soll
danke !!·


Ringpuffer mit Zeigern


Ein Ringpuffer ist ein nach dem FIFO-Prinzip (first-in-first-out) organisierter Speicher zur Pufferung von Daten, die z. B. von einem Meßdatenerfassungsprogramm "angeliefert" werden, und zeitversetzt von einem Auswertungsprogramm weiterverarbeitet werden. Auch in der Betriebssystemsoftware für Netzwerkinterfaces und für die Datenfernübertragung finden Ringpuffer Verwendung.

Der Puffer muß groß genug sein, damit er auch bei maximalem Zeitversatz nicht "überläuft". Durch Realisierung als lineare Liste ist dieser Fall immer gegeben, da man zu der Liste immer neue Elemente hinzufügen kann (jedenfalls, solange noch Arbeitsspeicher vorhanden ist).
Es muß dafür gesorgt werden, daß aus einem leeren Puffer nicht mehr gelesen wird -> Meldung "Puffer leer".
Die Abbildung des Rings in einem linear adressierten Speicher geschieht dadurch, dass ein am Pufferende angekommener Zeiger wieder an den Anfang gesetzt wird. Das Letze Element der Lister verweist also wieder auf das erste.
Der Ringpuffer soll für die Verwaltung einer ständig wechselnden Anzahl von Nachrichten verwendet werden, wie es z. B. bei E-Mails der Fall ist. Die Nachrichten treffen als Texte unterschiedlicher Länge ein. Um sie effektiv zu verwalten und zu speichern, liegt die Verwendung von verketteten Listen nahe. Um aus diesen Listen einen Ringpuffer zu machen, muß folgendermaßen vorgegangen werden:
o Eine neue Nachricht hängt sich an die vorherige "dran" - die Kette wird länger.
o Die Kette soll immer zu einem Ring geschlossen sein, damit z. B. nach dem Lesen der neuesten Nachricht als nächstes eine Wiederholung alter Nachrichten bei der ältesten beginnen kann.
o Zu einer effektiven Speicherverwaltung gehört auch das Beschaffen von Speicherplatz erst dann wenn er benötigt wird (malloc()) und Freigeben beim Löschen von Einträgen (free()).
Es wird bei der ältesten Nachricht begonnen. Im Verlauf des Programms wird die jeweils aktuelle Nachricht angezeigt. Zur Interaktion mit dem Benutzer bietet das Hauptprogramm folgendes Menü an:
o "D": Nachricht löschen (Delete)
o " ": (Leertaste) Nächste Nachricht
o "Q": Programm verlassen (Quit)
o "X": alle Nachrichten löschen
Nur zum Zweck der Simulation des Nachrichtenempfangs wird noch ein weiterer Menüpunkt benötigt:
· "E": Nachricht eingeben. Nun kann eine Textzeile eingegeben werden. Das neue Listenelement wird an der aktuellen Listenposition eingefügt.
Der Pufferzustand soll ständig erkennbar sein, d. h. in einer sog. Statuszeile wird die Zahl alter/neuer (= gelesener/ungelesener) Nachrichten angezeigt

a. Beginnen Sie bei der Datenstruktur, die aus einer Textzeile von max. 80 Zeichen und einem Pointer auf das nächste Element besteht. Skizzieren Sie den Puffer in verschiedenen Betriebszuständen und tragen Sie die jeweiligen Hilfs-Zeiger sowie die typischen Verkettungen ein:
o ganz am Anfang und nach der ersten Nachricht
o nach einigen Schreibvorgängen
o nach einigen Leseoperationen
o vor/nach Löschvorgängen

b. Überlegen Sie,
o welche Variablen benötigt werden,
o welche elementaren Funktionen gebraucht werden,
o welche der Variablen ggf. global (außerhalb aller Funktionen) vereinbart werden müssen, damit sie auf einfache Weise von den verschiedenen Funktionen benutzt werden können (möglichst wenige!),
o auf welche Weise Funktionsresultate an die aufrufende Funktion übergeben werden sollen,
o welche Funktion welche Überprüfungen durchführen soll

c. Zeichnen Sie die Struktogramme der benötigten Funktionen zum Initialisieren, Schreiben, Lesen und Löschen der Puffereinträge.

d. Erst jetzt wird der C-Quellcode geschrieben und alles getestet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.06.2005, 18:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


bastel dir eine liste und lass das letzte element aufs erste zeigen... wenn die liste zu klein wird füge ein weiteres element mit ein...
du musst wenn ich die aufabenstellung richtig verstanden habe aber kein liste nehmen sondern könntest auch ein array verwenden und ggf. mit realloc nachallokieren. da steht nur

Zitat:

Durch Realisierung als lineare Liste ist dieser Fall immer gegeben, da man zu der Liste immer neue Elemente hinzufügen kann (jedenfalls, solange noch Arbeitsspeicher vorhanden ist).


was nicht heisst das du nicht auch was anderes verwenden darfst
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.06.2005, 20:43 Uhr
ao

(Operator)



Zitat von Windalf:
bastel dir eine liste und lass das letzte element aufs erste zeigen... wenn die liste zu klein wird füge ein weiteres element mit ein...
du musst wenn ich die aufabenstellung richtig verstanden habe aber kein liste nehmen sondern könntest auch ein array verwenden und ggf. mit realloc nachallokieren. da steht nur

Zitat:

Durch Realisierung als lineare Liste ist dieser Fall immer gegeben, da man zu der Liste immer neue Elemente hinzufügen kann (jedenfalls, solange noch Arbeitsspeicher vorhanden ist).


was nicht heisst das du nicht auch was anderes verwenden darfst

Doch, genau das heißt es. Es ist nirgendwo von etwas anderem als einer Liste die Rede. Für eine Array-Lösung wirds hier wohl keine Punkte geben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.06.2005, 20:56 Uhr
ao

(Operator)


Fangen wir einfach mit Aufgabe a) an: Eine Datenstruktur aus einem 80 Zeichen langen Text und einem Zeiger auf ein anderes Element vom gleichen Typ.

C++:
struct stListElement
{
    /* du bist dran */
};



ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.06.2005, 23:22 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hier ist der eigentlich Urprungsthread. nächstes mal bitte möglichst diesen auch weiterverwenden...
www.fun-soft.de/showtopic.php?threadid=11678&time=1118956947

@ao
Da steht nur das unter der Annahme das ein System unendlich viel Speicher zur Verfügung hat man durch die Verwendung einer linearen Liste beliebig viele Elemente hinzufügen kann. Nicht mehr und nicht weniger
Von sie müssen eine lineare Liste verwenden lese ich da nichts in der Aufgabenstellung
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 16.06.2005 um 23:24 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.06.2005, 13:50 Uhr
ao

(Operator)



Zitat von Windalf:
Von sie müssen eine lineare Liste verwenden lese ich da nichts in der Aufgabenstellung

Und was ist hiermit?

Zitat:
Um sie effektiv zu verwalten und zu speichern, liegt die Verwendung von verketteten Listen nahe.

Unter Juristen mag das ein Unterschied sein, unter Programmierern kaum. Und die Aufgabenstellung (Aufgabe a) lässt dann ja gar keinen ernsthaften Zweifel mehr zu.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: