[ueb1] Fragethread

Fragen zur Aufgabe 1

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

[ueb1] Fragethread
Ich fang gleich mal mit einer Dummfrage an:

Und die 0? Die ist weder positiv noch negativ? Bekomm ich Aeger, wenn ich die zu den positiven dazustopf? Quasi N mit der 0 erlaube?


also ich gehe stark davon aus das die 0 dabei ist so hab ich das wenigstes implementiert, aber es kann auch gaaaaaaaaaaaanz anders sein aber, dass ist eigentlich ein sehr kleines problem oder :smiley:


Klar ein kleines Problem, aber strenggenommen ist hier die Spezifikation unvollstaendig, oder aber inkonsequent %)


ja gut da steht ja noch negative werte werden ignoriert, heisst also die 0 nicht, wenn ich mich nicht total daneben liege.


Da ist nicht positiv ist, duerfte sie nicht akzeptiert werden.


Laut der Spezifikation dürfte es doch erlaubt sein, das Programm als Netzwerk-Server/-Client zu implementieren, oder? :smiley: Wenn nicht, dann gebe ich eben meine “normale” Lösung ab.

edit:

shroud@temple:~$ ./rpc_queue server
Queue server starting up...
Waiting for connections on port 5459...
accepted client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
sending response...
processing client 4
invalidating client 4

faui05a [~]> ./rpc_queue
remove: 47
remove: 11
remove: 42
remove: -1
remove: 13
faui05a [~]>

:slight_smile:

Mfg,
shroud


8-(

kein Kommentar.
naja, ein kleiner; Mit Atombomben auf Spatzen schiessen… :wink:


Einen Übungsleiter mit zu viel Korrekturarbeit zu nerven ist jedenfalls kei gute Idee :smiley: Also es gibt ja immer ein paar Leute, die meinen es übertreiben zu müssen mit irgendwelchen Lösungen, die für Spezialfälle optimieren und solche Geschichten.

Wobei die Lösung schon wieder so cool ist eigentlich, aber solche Aufgaben können ja noch kommen, also einfach mal abwarten.


:vogel:


kleine Frage an die C- :finger: -Leute hier:

error: initializer element is not constant

taucht bei der mem allocation für head/next auf…
was sagt uns das?


Vermutlich versuchst du außerhalb einer Funktion etwas wie

struct listelement *head = malloc(sizeof *head);

Variablen können außerhalb von Funktionen nur mit Konstanten, also z.B. NULL
initialisiert werden. Du musst den Speicher für head bzw. tail innerhalb einer
Funktion reservieren.


oh aua - da waren wohl ein paar ‘{}’ zuviel… und schon dachte der comp die wären außerhalb :rolleyes:
Danke für den Hinweis!


hi,

ich hab auch ne Frage:

ist die Strukturdefinition auf Blatt U1.10

struct listelement{
int value;
struct listelement *next;
};

als Vorschlag für die Liste zu sehen oder verpflichtend so im Programm zu verwenden? Ich hab nämlich ein Problem mit O(1) und will, wenn sichs vermeiden lässt, nicht x-verschiedene globale Variablen einführen. Wenn ich allerdings die Struktur ein wenig erweitere müsste ichs auch ohne schaffen (hoffe ich :slight_smile: )


Wozu der Aufwand? Alles, was du dir als globale Variablen merken brauchst, sind ein Zeiger auf das erste Element und einer auf das letzte Element der verketteten Liste.


klavi: Ich wuerde den nicht als verpflichtend ansehen. Steht ja nirgends :wink: Allerdings musst du die Struktur fuer die gestellte Aufgabe nicht aendern.


Die globalen Variablen hast eh nur ein mal im Speicher, das struct wird allerdings pro Element das in der Queue steckt allokiert. Wenn du da also das struct erweiterst (z.B. eine doppelt verkettete liste draus machst) hast du gleich ein vielfaches vom Speicherbedarf.
So tragisch sind globale Variablen auch nicht, dass man deshalb einen anderen Algorithmus waehlt. Man sollte halt nicht eine Variable global definieren, wenn die eh nur in einer funktion lokal verwendet wird.


in den Übungen heute hab ich gehört “wenn einem was Besseres einfällt, darf er das gerne benutzen”. Allerdings hat sich der Übungsleiter äußerst negativ über server-client- Modell ausgedrückt :smiley:


die idee mit der doppelt verketten liste hatte ich auch hab sie auch realisiert (:D), aber naja ich dacht mir spar doch mal speicher musst ja nur das erste und letzte element bearbeiten, also einfach verlinkt reicht auch, dann hab ichs heut in der RÜ umgeschrieben :smiley: Sind auch deutlich weniger poiner umstellungen. und zwei gloabele variabeln braucht ma schon denk ich


Bei doppelt verkettenten listen musst du vorsichtig sein dass es alles in O(1) läuft, also nicht einfach nur immer den Vorgänger und Nachfolger anketten sonst hast du ganz schnell O(n) Komplexität.

Mit zwei globalen Variablen gehts auf jeden Fall am einfachsten.