Hilfe für Schulprojekt

CptCookielike

Grünschnabel
Hallo :)
ich komme gleich zum Thema ich habe Informatikleistungskurs in der Schule und brauche nun ein Projekt für eine Klausurersatzleistung. Ich finde einfach keine Ideen für die vorgegebenen Bedingungen..
Vielleicht kann mir hier ja einer helfen. :D

Hier sind die Anforderungen:
- Es müssen mindestens zwei verschiedene komplexe Datenstrukturen (Array != Datenstruktur) zur Speicherung von Daten verwendet werden. Die Datenstrukturen sollten dabei den Anforderungen entsprechend gewählt werden.
- Das Programm sollte eine grafische Benutzeroberfläche bieten. Diese sollte möglichst einfach gestaltet sein und den Benutzer alle Ein- und Ausgaben ermöglichen.

Was die Möglichkeiten natürlich eingrenzt ist die Tatsache, dass wir an komplexen Datenstrukturen im Unterricht bisher nur Lineare Liste, Schlange und Stack hatten. :/
Ich hoffe es findet sich dennoch jemand mit einer Idee und sonst wünsch ich euch allen noch einen schönen Tag :)
Cookie | Tabs
 
danke ich werd mal reinschauen :)
eine Idee wie man eine Schlange oder eine lineare Liste in den upn rechner integrieren kann? :D
 
Zuletzt bearbeitet:
ich komme gleich zum Thema ich habe Informatikleistungskurs in der Schule und brauche nun ein Projekt für eine Klausurersatzleistung.
Wie viel Zeit willst du denn investieren?

Es müssen mindestens zwei verschiedene komplexe Datenstrukturen (Array != Datenstruktur) zur Speicherung von Daten verwendet werden. Die Datenstrukturen sollten dabei den Anforderungen entsprechend gewählt werden.
Ein Array ist sehr wohl eine Datenstruktur (aber nicht wirklich komplex :) ). Ein Stack ist allerdings schon eher einfacher als ein Array.
Das Programm sollte eine grafische Benutzeroberfläche bieten. Diese sollte möglichst einfach gestaltet sein und den Benutzer alle Ein- und Ausgaben ermöglichen.
Also doch eher viel Zeit?

danke ich werd mal reinschauen :)
eine Idee wie man eine Schlange oder eine lineare Liste in den upn rechner integrieren kann? :D
Mh. Bei Rechnern sind Bäume eigentlich besser geeignet als lineare Listen.
Mit Bäumen könntest du aber auch Kurvendiskussionen machen.

Gruss
cwriter
 
Wie viel Zeit willst du denn investieren?

also viel mehr zeit als ne woche hab ich nich mehr hehe.. .-.


Ein Array ist sehr wohl eine Datenstruktur (aber nicht wirklich komplex :) ). Ein Stack ist allerdings schon eher einfacher als ein Array.

unser lehrer meinte damit, dass das array in diesem falle nicht als komplexe datenstruktur gilt und ich somit zwei brauche ohne array.

Hättest du sonst eine andere idee? :D bin bei sowas echt unkreativ...
 
Mit Bäumen könntest du aber auch Kurvendiskussionen machen.
Da könntest du zum Beispiel schön einfach Ableitungen errechnen. Sagt dir AST etwas?
Aber das zu realisieren wird wohl länger dauern, weil du dann auf der Eingabeseite auch einen Parser benötigst/einbinden musst. Zumindest Mitte 2014 konnte ich für mich keine zufriedenstellende fertige Java-Bibliothek finden, siehe meinen Post hier: Java library to transform a math formula into an AST. Damals habe ich dann JavaScript-Code in Java ausführen lassen, da es dank Math.js eine tolle JavaScript-Bibliothek für den Anwendungszweck gab :)

Wie wäre es mit einer Save/Restore Funktion im Taschenrechner, sodass du Zwischenergebnisse in Variablen abspeichern kannst und diese per Klick auch wieder laden kannst?
Der Einfachheit halber kannst du das Laden darauf beschränken, die gespeicherte Zahl einfach als Benutzereingabe zu simulieren.
Den Variablennamen kann der Nutzer per Eingabefeld eingeben, intern hast du dann die Zuordnung Name (String) -> gespeicherter Wert (int/double). Nach welcher Datenstruktur klingt das? ;)
 
Aber das zu realisieren wird wohl länger dauern, weil du dann auf der Eingabeseite auch einen Parser benötigst/einbinden musst.
Ja, eine Woche ist sehr kurz für sowas...

Wie wäre es mit einer Save/Restore Funktion im Taschenrechner, sodass du Zwischenergebnisse in Variablen abspeichern kannst und diese per Klick auch wieder laden kannst?
Normale "M"-Funktionalität wäre aber allerhöchstens ein Stack mit peek(), eher nur ein einfacher 1-Wert-Speicher.

Der Einfachheit halber kannst du das Laden darauf beschränken, die gespeicherte Zahl einfach als Benutzereingabe zu simulieren.
Wird doch auch von Taschenrechnern so gemacht? :eek:

Den Variablennamen kann der Nutzer per Eingabefeld eingeben, intern hast du dann die Zuordnung Name (String) -> gespeicherter Wert (int/double). Nach welcher Datenstruktur klingt das? ;)
Ehrlich gesagt (zumindest für mich): Sicher nicht nach Liste, die in O(n) sucht. Eher Baum (O(log(n)) oder Array (O(log(n))), was aber nicht erlaubt ist...

Gruss
cwriter
 
Oje langsam hab ich das Gefühl, ich bin zu dumm dafür D:
Wofür?
Gewisse Datenstrukturen sind für gewisse Applikationen besser als andere.
Falls du die Landau-Notation nicht verstehst:

Man unterscheidet Algorithmen nach Güte.
Ich mache es mal am Beispiel des Arrays:
Sagen wir, du hast den Array int[] arr.
Wenn du eine Position i darin füllen willst, dann schreibst du arr[i] = x;
Nun ist die Frage, wie lange ein Computer dafür braucht.
Ein Array ist schlicht ein Speicherblock, und heutzutage im RAM (Random Access Memory). Dieses Random heisst, dass du jedes Wort (meist 4/8 Bytes, Maschinenabhängig) direkt auslesen kannst (also random, nicht in einer bestimmten Reihenfolge).
Daher ist jeder Zugriff in konstanter Zeit machbar ( O(1) ), schreiben wie lesen. O(1) ist dabei dasselbe wie O(100000), da man ja nicht definiert hat, wie gross die Zeiteinheiten sind. Es sind nur qualitative Angaben.
Eine Liste hingegen hat das Problem, dass du nur weisst, wo das erste Element ist. Um auf das letzte Element einer Liste mit n Elementen zuzugreifen, brauchst du n Schritte, also eine Laufzeit von O(n).
Sagen wir, du hast eine sortierte Datenstruktur. Mittels binärer Suche kommst du dann beim Array auf eine Suchzeit von O(log(n)), bei der Liste geht das nicht, da du ja immer wieder von vorne beginnen müsstest.

Zum Projekt: Du könntest eine kleine Zugsimulation schreiben. Dort sind Listen (Züge) und Stacks (Passagiere) besser möglich.
Aber es ist schwierig, die Sache so anzugehen. Normalerweise weiss man, was man will, und nimmt dann die passende Struktur.

Gruss
cwriter
 
Man unterscheidet Algorithmen nach Güte.
Ich mache es mal am Beispiel des Arrays:
Sagen wir, du hast den Array int[] arr.
Wenn du eine Position i darin füllen willst, dann schreibst du arr[i] = x;
Nun ist die Frage, wie lange ein Computer dafür braucht.
Ein Array ist schlicht ein Speicherblock, und heutzutage im RAM (Random Access Memory). Dieses Random heisst, dass du jedes Wort (meist 4/8 Bytes, Maschinenabhängig) direkt auslesen kannst (also random, nicht in einer bestimmten Reihenfolge).
Daher ist jeder Zugriff in konstanter Zeit machbar ( O(1) ), schreiben wie lesen. O(1) ist dabei dasselbe wie O(100000), da man ja nicht definiert hat, wie gross die Zeiteinheiten sind. Es sind nur qualitative Angaben.
Eine Liste hingegen hat das Problem, dass du nur weisst, wo das erste Element ist. Um auf das letzte Element einer Liste mit n Elementen zuzugreifen, brauchst du n Schritte, also eine Laufzeit von O(n).
Sagen wir, du hast eine sortierte Datenstruktur. Mittels binärer Suche kommst du dann beim Array auf eine Suchzeit von O(log(n)), bei der Liste geht das nicht, da du ja immer wieder von vorne beginnen müsstest.

Das hab ich sogar verstanden :D

Aber es ist schwierig, die Sache so anzugehen. Normalerweise weiss man, was man will, und nimmt dann die passende Struktur.

Genau das ist mein Problem mir fällt eben kein Projekt ein, was auf die Anforderungen passt :/
 
Zurück