Hilfe bei Programmgestaltung

06/11/2018 18:49 S u n#1
Hallo!
Ich arbeite zur Zeit an meinen C Kenntnissen, und bearbeite dazu einen Haufen von Aufgaben. Leider komme ich bei der Aktuellen nicht wirklich weiter, bzw fehlt mir die richtige Idee dazu.
Die Aufgabe ist es, ein Programm zu erstellen, welches 19 Regeln einhält.
Bisher sind mir leider nur zwei Ideen gekommen, die aber beide ihre eigenen Probleme haben.

REGELN:

Idee 1: Mazesolver
Hierbei gestaltet sich das einlesen des Labyrinths als Problem. Ich habe eine Grundlegende Idee, wie ich das Labyrinth lösen könnte, aber keinen schimmer wie ich es überhaupt in ein Array bringen kann. Da ich es einlesen muss, und danach ausgeben muss, kann ich nicht mit einem Array aus X(Wand) und O(weg) arbeiten.

Idee 2: To-do Liste
Wirkt für mich simpler, allerdings denke ich, dass eine Liste nicht alle Punkte erfüllen kann.
Das Schreiben und Einlesen kann hier ganz einfach in eine .txt Datei realisiert werden. Die Idee war, eine Liste zu erstellen, in der zb Deadline, Ort, Name der Aufgabe, Priorität eingetragen werden können. Allerdings weiß ich nicht, ob ich dort dann viel mit malloc (Aufgabe 13+14) verwirklichen kann.

Ich tendiere eher zu Idee 2, aber habt ihr noch bessere bzw idealere Ideen?
Der Fokus liegt hier klar auf weniger ist mehr, ich möchte also kein 1000 Zeilen Programm schreiben, sondern möglichst elegant alle Aufgaben erfüllen.

Ich habe bereits ein Rohling der todo Liste gebastelt, allerdings erfüllt diese bei weitem nicht alle Aufgaben, und hat noch einige Fehler.
Sollte jemand so lieb sein, und überhaupt diesen ganzen Text durchlesen, und danach noch helfen wollen, schicke ich ihm die .c Datei gern Per PM!


Was für Ideen fallen euch ein? Was haltet ihr von meinen Ideen?
06/11/2018 20:10 th0rex#2
Erstmal was zu den Regeln, ich finde die sind absoluter Quatsch. Du nutzt was wenn du es brauchst, und nicht weil eine Regel sagt "du musst das jetzt nutzen". Das erinnert mich irgendwie an die Aufgaben aus der Uni, wo du eine Klasse für einen sortieralgorithmus erstellen musst (wtf?!) und auch absolut überall virtual ohne Grund genutzt wird. Bei den Regeln ist ja z.b. das mit dass mindestens die Ein oder Ausgabe redirected werden muss ziemlich behindert. Wenn man das will macht man das später auf der Konsole und gut ist. Wenn du das freiwillig lernst und dir diese Aufgabe nicht aufgezwungen wird als Hausaufgabe oder so, würd ich mir vielleicht lieber andere Sachen suchen die nicht so etwas unnötiges von dir verlangen.

Zu der ToDo Liste:
malloc wirst du hier mehr oder weniger nutzen müssen, du weißt ja vor dem einlesen nicht, wie groß die Liste sein wird. Wenn dein Ziel also ist unbedingt malloc zu nutzen wirst du das in der Aufgabe bestimmt tun. Generell ist die Aufgabe wahrscheinlich auch ganz gut, aber halt jetzt nicht sonderlich komplex von den verwendeten Algorithmen her.

Bei dem Mazesolver verstehe ich nicht ganz, was du mit einem "Arrays aus X(Wand) und O(Weg)" arbeiten meinst. Da die Regeln dich ja "zwingen" ein mehrdimensionales Array und eine Aufzählung (denke mal damit meinen sie enum) zu nutzen, bietet sich das doch hier recht gut an. Am Anfang der Datei kannst du ja z.b. haben, wie breit und groß dein Labyrinth ist. Dann erstellst du ein 2 dimensionales array eben dieser Größe, wo der typ z.b. dein eigenes enum ist. Das enum kann dann sachen wie "frei", "wand", "ausgang", "eingang" usw beinhalten. Dann liest du von der Datei so viel ein, wie am Anfang durch die Breite und Höhe festgelegt wurde. Kannst ja z.b. für eine Wand ein "|" als Zeichen verwenden, für freie Stellen ein Leerzeichen und für eingang bzw. ausgang einfach ein I oder ein O. Ist dir aber natürlich komplett frei wie du dein Labyrinth darstellen willst. Aber die Idee eines Mazesolvers ist bestimmt gut, finde ich persöhnlich besser als eine ToDo Liste, weil du da schon recht viel über gewisse Algorithmen lernen kannst, wenn du denn möchtest.

Will hier jetzt nicht unbedingt die Aktivität des Forums verringern, aber da du eh schon PMs vorschlägst, kannst ja mal auf den coding discord kommen wenn du so mehr "interaktive" Fragen hast, da helfen dir bestimmt Leute. Könntest da ja auch deinen Code posten wenn du magst. [Only registered and activated users can see links. Click Here To Register...] sollte der Invite link sein, ansonsten kannst du auch in Serraniels Signatur gucken, da ist der auch drinnen (oder halt in dem entsprechendem Thema auf epvp).
06/11/2018 20:23 S u n#3
Quote:
Originally Posted by C0untLizzi View Post
[...]
Danke für deine Tipps! Ich werde mir den Coders Discord mal eintragen, habe aber Angst durch meine ganzen Fragen alle zu vergraulen. :D


Die todo liste hat halt den großen Vorteil des bestehenden Rohlings. Ich habe eine funktionierende todo Liste aus einer Uni Aufgabe, und müsste in dieser dann halt alle geforderten Dinge unterbringen.

XXXXXXAXXXXXX
X000000000000X
X0XXXX0XXXXXX
XEXXXXXXXXXXX

X=Wand
0=Weg
A=Anfang
E=Ende

So hatte ich mir ein einfaches Labyrinth vorgestellt. Allerdings wüsste ich nicht, wie der Weg eingetragen werden kann. Insgesamt scheint mir die Aufgabe als zu groß und komplex.
Mein Ziel ist es diesen Kurs zu bestehen. Ich habe bei zwei Aufgaben schon als Feedback bekommen, ich würde zu viel um die eigentliche Aufgabe bauen. Ziel ist es die Aufgabe effektiv zu lösen, nicht möglichst pompös und mit vielen kleinen Extras. Habe mich schon deswegen beschwert, aber leider gab es kein gutes Feedback dazu.

/Suni
06/12/2018 13:34 krankheit#4
Quote:
Die todo liste hat halt den großen Vorteil des bestehenden Rohlings. Ich habe eine funktionierende todo Liste aus einer Uni Aufgabe, und müsste in dieser dann halt alle geforderten Dinge unterbringen.
Ich denke es ist hilfreicher, wenn neue Programme erstellt werden. Als funktionierendes ständig zu erweitern. Da würde ich eher nach nem halben Jahr nochmal drüber schauen und prüfen ob der Code verständlich ist und man nach dieser Zeit vielleicht etwas verbessern könnte. Sprich bei neuen Erkenntnissen hinsichtlich Wartbarkeit und Lesbarkeit etc. Die Regeln finde ich auch nicht so gut. Einfach mal nach Aufgaben googeln. Am Anfang halt sowas wie Tic Tac Toe über die Konsole mit Visualisierung. Für Rekursion hatte ich als Übung Die Türme von Hanoi. Sowas in der Richtung. Wenn man die Basics kann heißt es einfach üben üben üben, anwenden, probieren am besten mit Aufgaben. Da hat man dann auch ein Ziel auf manchen Pages kann man sich auch Feedback holen oder schauen wie andere das gelöst haben.