Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
17.01.2002, 01:36
Mephi



Halli hallo,

ich, Student im ersten Semester, bin gerade an einer Programmieraufgabe. Ist ne Kleinigkeit, Datei auslesen, einen größten Wert finden und damit berechnungen durchführen. Nunja, in einem Anfall von Arbeitswut hab ich mir überlegt den kram zum üben in nen Baum zu packen (ist zwar bei den 10 Datensätzen total sinnlos, aber was solls)
Nunja, das zur vorgeschichte, jetzt zu meiner eigentlichen Frage:
Undzwar hatte bin ich während dem Programmieren auf die Wahnsinnige Idee gekommen, das struct für das Blatt des Baumes doppelt zu verzeigern, um nicht 2 Bäume (wegen den 2 Suchkriterien aufbauen zu müssen[klappt übrigens auch prima *g*]) basteln zu müssen. Jetzt wollte ich eigentlich nur wissen, weil ich noch ein ziemlicher neuling in der C-Programmier welt bin, ob auf diese Idee schon jemand anderes gekommen ist, oder ob ich das "meine Erfindung" schimpfen kann. (Wird wohl nicht so sein :-) )
So, falls es jemand nicht versteht, hier die wichtigen structe:

Quellcode:
struct einlesesatz
{
char filiale[21];
float umsatz;
float bestand;
float beschaeftigte;
float loehne;
short    quadratmeter;
float anlagevermoegen;
   };

      struct   knoten
       {
            struct einlesesatz inhalt;
            struct knoten *APlinks;
            struct knoten *APrechts;
            struct knoten *UZlinks;
            struct knoten *UZrechts;
            };

Ach, falls irgendwelche gravierenden nachteile durch so eine Art der Programmierung geben könnte, wäre ich auch dankbar, diese zu erfahren.
So denn mal Tschau

euer Mephi

--

Ich möcht mich gleich dem Teufel übergeben, Wenn ich nur selbst kein Teufel wär!

-- Aber das mit dem Virus gefällt mir auch gut --

zum Seitenanfang zum Seitenende Profil || Suche
001
17.01.2002, 01:51
Kriz



Hm, der Baum ist schon ok. Du verwendest Zeiger für die nachfolgenden Knoten, was sehr vorteilhaft ist.

Allerdings gibt soviele Bäume, daß du mit Sicherheit nichts Neues erfunden hast. Eigentlich überhaupt nicht, denn wenn du nur einen Zeiger für den Nachfolger implementierst, hast du eine Verkettete Liste und die ist absolut nicht neu =) Binäre Bäume arbeiten mit 2 Verzweigungen (wegen 0 und 1) -> Hufmann-Kodierung.

Aber hau rein, datt wird schon!

Ach ja, ich empfehle Dir dann Sedgewick's Algorithmen in C (oder C++, je nachdem), da steht soviel über Bäume drin, daß dir der Kopf platzt =)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 17.01.2002 um 01:52 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
17.01.2002, 02:55
Mephi



Zitat:
Kriz postete
Ach ja, ich empfehle Dir dann Sedgewick's Algorithmen in C (oder C++, je nachdem), da steht soviel über Bäume drin, daß dir der Kopf platzt =)

Das liegt schon neben mir, keine Angst....

Es ging mir hier im speziellen um diese doppelte verzeigerung, dass also ein und der selbe Datensatz zwei Funktionen hat, dass es also ein Blatt von zwei Bäumen gleichzeitig ist.
Naja, ich verkaufs einfach nicht als meine erfindung und gut ist, da muß ich wohl mit mehr auswarten um die C-Programmiergemeinde in erstaunen zu versetzen *g* Für mich und ein zwei Kumpels hats ja schonmal gereicht.
Ach, wenn ich grade mal dabei bin, wie frage ich eigentlich die Pfeiltasten ab, habe schon rausgefunden, dass sie auf ascII 80 d reagieren, alllerdings wohl auch das Große H. Ein kleines tool, was ich mal schnell gemacht habe:

Quellcode:
  int l;
  while(1) {
  l = getch();
  printf("%d\n",l);
  }

gibt mir beim drücken der Pfeil-hoch taste "0 carriage return 72" aus...
Die 0 scheint wohl zu sagen: "Hallo ich bin eine sondertaste"
aber ich habe jetzt keine idee, wie man das jetzt mal so einfach auswertet.
Ich hoffe mir kann da jemand helfen.

Gruß Mephi

--

Ich möcht mich gleich dem Teufel übergeben, Wenn ich nur selbst kein Teufel wär!

-- Aber das mit dem Virus gefällt mir auch gut --

zum Seitenanfang zum Seitenende Profil || Suche
003
17.01.2002, 07:11
Tron



die pfeiltasten erzeugen 2 tastencodes: wie du richtig festgestellt hast erst eine 0, dann eine zahl fuer welche taste

das kann man ganz einfach so abfragen:

l = getch();
if (l == 0)
{
..l = getch();
..switch(l)
..{
....case welchen_code_die_tasten_im_einzelnen_haben_weiss_ich_grade_nicht:
....{
......tu_was();
....}
..}
}

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
004
17.01.2002, 09:50
Tomz



@tron
ich weiss das du viel besser programmieren kannst als ich, und ich stelle diese frage nicht aus frevel...

aber kann man den if befehl nicht direkt so schreiben

if(!l)

sehrwahrscheinlich hast du es der übersichthalber ausgeschrieben, aber geht das auch?

--

...denn das atombrot wird nicht ruhen bis es den letzten erwischt hat...

zum Seitenanfang zum Seitenende Profil || Suche
005
17.01.2002, 11:51
CY4N1D3



frage: topic und thema... sollte da nicht irgendwo ein versteckter zusammenhang bei sein ? ;)

--

ob nun delphi, c oder java. kein programm lässt sich mit allen 3en gleichschnell entwickeln.

zum Seitenanfang zum Seitenende Profil || Suche
006
17.01.2002, 12:52
Mephi



Sehe ich richtig, dass die obere Schleife (mit dem while(1)) in Wirklichkeit bei einem Tastendruck 2 mal durchläuft? einmal mit Benutzereingabe... welches dann 2 werte in den Tastatur Puffer legt und dann einmal, um den letzten Wert dann auch noch zu printffen ?
Dann wird das mein "großes" Programm wohl auch machen.

@CY4N1D3 der versteckte zusammenhang läßt sich eindeutig aus dem ersten Beitrag von mir ableiten, da Frage ich nämlich, ob ich etwa diese Bäume "erfunden" haben könnte, deshalb das eher lustig gemeinte Thema, dass ich aus der bekannten Familien Sitcom "Alle unter einem Dach" aufgegriffen habe.

[EDIT]
@Kriz wie kann man Bäume denn ohne Zeiger bauen? Hab nie ne andere Methode gelernt.
[/EDIT]

--

Ich möcht mich gleich dem Teufel übergeben, Wenn ich nur selbst kein Teufel wär!

-- Aber das mit dem Virus gefällt mir auch gut --


Dieser Beitrag wurde am 17.01.2002 um 12:58 von Mephi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
17.01.2002, 13:42
CY4N1D3



hehe, ok :)

--

ob nun delphi, c oder java. kein programm lässt sich mit allen 3en gleichschnell entwickeln.

zum Seitenanfang zum Seitenende Profil || Suche
008
17.01.2002, 21:15
Tron



@Tomz: jup
(l == 0) kann man auch als (!l) schreiben, aber ein heutiger compiler macht da bestimmt den selben maschinencode draus
in diesem falle finde ich - rein stilistisch - (l == 0) eher angebracht, da man auf dem wert 0 und nicht auf false prueft.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche