Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > ger.ct > #287753 > unrolled thread

[Programmierung] Darstellung einer Baumstruktur

Started byRicardo Szabo <usenet13@rickszabo.de>
First post2016-12-12 17:47 +0000
Last post2016-12-13 09:54 +0100
Articles 10 on this page of 30 — 12 participants

Back to article view | Back to ger.ct


Contents

  [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-12 17:47 +0000
    Re: [Programmierung] Darstellung einer Baumstruktur Frank Möller <butterspiegeleiauftoast42@spl.at> - 2016-12-12 19:19 +0100
      Re: [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-12 19:33 +0000
        Re: [Programmierung] Darstellung einer Baumstruktur Hermann Riemann <nospan.gerct08@hermann-riemann.de> - 2016-12-12 21:19 +0100
    Re: [Programmierung] Darstellung einer Baumstruktur Dennis Preiser <d__p@d--p.de> - 2016-12-12 18:32 +0000
      Re: [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-12 19:33 +0000
        Re: [Programmierung] Darstellung einer Baumstruktur Herwig AQSR <herwig.huener@t-online.de> - 2016-12-12 16:41 -0800
          Re: [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-13 05:28 +0000
            Re: [Programmierung] Darstellung einer Baumstruktur Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-12-13 07:26 +0000
            Re: [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-13 08:31 +0000
            Re: [Programmierung] Darstellung einer Baumstruktur Hermann Riemann <nospan.gerct08@hermann-riemann.de> - 2016-12-13 10:18 +0100
            Re: [Programmierung] Darstellung einer Baumstruktur Herwig AQSR <herwig.huener@t-online.de> - 2016-12-13 03:57 -0800
              Re: [Programmierung] Darstellung einer Baumstruktur Hermann Riemann <nospan.gerct08@hermann-riemann.de> - 2016-12-14 10:06 +0100
                Re: [Programmierung] Darstellung einer Baumstruktur Wolfgang Kynast <wky@gmx.de> - 2016-12-14 10:17 +0100
                  Re: [Programmierung] Darstellung einer Baumstruktur Hermann Riemann <nospan.gerct08@hermann-riemann.de> - 2016-12-14 16:22 +0100
                    Re: [Programmierung] Darstellung einer Baumstruktur Herwig AQSR <herwig.huener@t-online.de> - 2016-12-14 10:45 -0800
                      Re: [Programmierung] Darstellung einer Baumstruktur Dietz Proepper <dietz-news@rotfl.franken.de> - 2016-12-14 21:00 +0100
                        Re: [Programmierung] Darstellung einer Baumstruktur Wolfgang Enzinger <we_usenet@nurfuerspam.de> - 2016-12-14 21:37 +0100
                          Re: [Programmierung] Darstellung einer Baumstruktur Gerrit Heitsch <gerrit@laosinh.s.bawue.de> - 2016-12-14 21:49 +0100
                            Re: [Programmierung] Darstellung einer Baumstruktur Wolfgang Kynast <wky@gmx.de> - 2016-12-14 23:17 +0100
                          Re: [Programmierung] Darstellung einer Baumstruktur Dietz Proepper <dietz-news@rotfl.franken.de> - 2016-12-14 23:25 +0100
                            Re: [Programmierung] Darstellung einer Baumstruktur Herwig AQSR <herwig.huener@t-online.de> - 2016-12-14 14:43 -0800
                        Re: [Programmierung] Darstellung einer Baumstruktur Hermann Riemann <nospan.gerct08@hermann-riemann.de> - 2016-12-15 10:14 +0100
                      Re: [Programmierung] Darstellung einer Baumstruktur Hermann Riemann <nospan.gerct08@hermann-riemann.de> - 2016-12-15 10:02 +0100
                Re: [Programmierung] Darstellung einer Baumstruktur Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-12-14 10:59 +0000
                  Re: [Programmierung] Darstellung einer Baumstruktur Matthias Eißing <meissing@gmx.de> - 2016-12-14 15:55 +0100
    Re: [Programmierung] Darstellung einer Baumstruktur Wolfgang Enzinger <we_usenet@nurfuerspam.de> - 2016-12-12 23:15 +0100
    Re: [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-13 05:17 +0000
      Re: [Programmierung] Darstellung einer Baumstruktur Ricardo Szabo <usenet13@rickszabo.de> - 2016-12-13 19:55 +0000
    Re: [Programmierung] Darstellung einer Baumstruktur Thomas Heuving <heuving@gmx.de> - 2016-12-13 09:54 +0100

Page 2 of 2 — ← Prev page 1 [2]


#288102

FromDietz Proepper <dietz-news@rotfl.franken.de>
Date2016-12-14 23:25 +0100
Message-ID<mft8id-9g4.ln1@rotfl.franken.de>
In reply to#288077
Am 14.12.2016 um 21:37 schrieb Wolfgang Enzinger:
> Am Wed, 14 Dec 2016 21:00:13 +0100 schrieb Dietz Proepper:
>
>>> Macht man trotzdem nicht.
>>
>> Wenn der hack eine Zeile statt 50 umfasst und 1/10 der CPU-Zeit benötigt
>> dann darf man zumindest darüber nachdenken.
>
> Eventuell meinst du das Gleiche wie ich, aber ich würde anders formulieren:
> wenn man den Hack und was man damit bewirken wollte nach drei Jahren noch
> auf Anhieb versteht, dann darf man.

Nein. Hacks sind zu dokumentieren. So, dass man sie nach drei Jahren 
noch versteht. Bzw. so dass der Reviewer versteht, was der Hack macht 
(ohne verbatime Erklärung).

[toc] | [prev] | [next] | [standalone]


#288103

FromHerwig AQSR <herwig.huener@t-online.de>
Date2016-12-14 14:43 -0800
Message-ID<ccc0c939-18f0-4fa3-b27a-5cf2361fd2d6@googlegroups.com>
In reply to#288102
2016-12-14 23:43:00 +0100

> > Eventuell meinst du das Gleiche wie ich, aber ich würde anders formulieren:
> > wenn man den Hack und was man damit bewirken wollte nach drei Jahren noch
> > auf Anhieb versteht, dann darf man.
> 
> Nein. Hacks sind zu dokumentieren. So, dass man sie nach drei Jahren 
> noch versteht. Bzw. so dass der Reviewer versteht, was der Hack macht 
> (ohne verbatime Erklärung).

Synthese: Wenn der Hack einem Professional ohne Kommentar verständlich ist,
dann darf man. Sonst dokumentieren, klar.

Das schlimmste in einem ProgrammierTeam ist ein Mitarbeiter, der intelligent
ist. Das meine ich ernst: Die anderen müssen seinen genialen GedankenGängen
- ob dokumentiert oder nicht - hinterherdackeln. Manchmal vergeblich.

Herwig

[toc] | [prev] | [next] | [standalone]


#288129

FromHermann Riemann <nospan.gerct08@hermann-riemann.de>
Date2016-12-15 10:14 +0100
Message-ID<ebf588Fu91dU1@mid.individual.net>
In reply to#288073
Am 14.12.2016 um 21:00 schrieb Dietz Proepper:

> Wenn der hack eine Zeile statt 50 umfasst und 1/10 der CPU-Zeit benötigt
> dann darf man zumindest darüber nachdenken.

Meine Programmiererfahrung:
Trickprogrammierung sind an wenigen Stellen im Programm
zweckmäßig, wenn man dadurch viel erreicht.

Die Masse des Programm codes
insbesondere Wege die wenig durchlaufen werden,
sollte die Les- und Verstehbarkeit die Hauptrolle spielen.

Hermann
    der schon erwägt, in Python den C Präprozessor zu verwenden.

-- 
www.Hermann-Riemann.de

[toc] | [prev] | [next] | [standalone]


#288127

FromHermann Riemann <nospan.gerct08@hermann-riemann.de>
Date2016-12-15 10:02 +0100
Message-ID<ebf4h8Fu3s4U1@mid.individual.net>
In reply to#288057
Am 14.12.2016 um 19:45 schrieb Herwig AQSR:

>> Und in Pascal ST konnte ich auch anders programmieren,
>> wenn ich mit Hilfe von GST Assembler
>> den stack pointer ausgetauscht hatte.

> Das hört sich nach quick-and-dirty an.

Das war weder quick noch dirty.

> So. Etwas. Macht. Man. Nicht.

Erinnert mich an meine Mutter, als sie sagte,
"Man muss mit der Mode gehen"
Unpraktisch, sachlich nicht gerechtfertigt,
aber aus anderen Gründen teilweise erduldet.

Hermann
    der Zusammenarbeit des öfteren für
    wenig zweckmäßig hält.

-- 
www.Hermann-Riemann.de

[toc] | [prev] | [next] | [standalone]


#287981

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2016-12-14 10:59 +0000
Message-ID<3t58512598i6a7dn3e8%sfroehli@Froehlich.Priv.at>
In reply to#287967
On Wed, 14 Dec 2016 10:06:55 Hermann Riemann wrote:
> Bei den Uraltsprachen konnte Lisp Rekursion, FORTRAN nicht.

Lustig war Turbo Pascal, das in den frühen 90ern ja wahlweise für
CP/M und MS-DOS angeboten wurde. Einzelne Programme von mir haben
auf der Uni unter MS-DOS funktioniert, daheim unter CP/M jedoch
nicht.

Rätsels Lösung war schlussendlich, dass unter CP/M mehrfach
rekursive Aufrufe innerhalb einer Funktion nicht unterstützt wurden
(einfache Rekursion hingegen schon). Das war natürlich nirgendwo
dokumentiert, und das Problem einzugrenzen eine gewisse
Herausforderung.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - die letzte Komparation von verschränkt!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#288023

FromMatthias Eißing <meissing@gmx.de>
Date2016-12-14 15:55 +0100
Message-ID<o2rmg6$a0s$1@solani.org>
In reply to#287981
Am 14.12.16 um 11:59 schrieb Stefan Froehlich:
> Rätsels Lösung war schlussendlich, dass unter CP/M mehrfach
> rekursive Aufrufe innerhalb einer Funktion nicht unterstützt wurden
> (einfache Rekursion hingegen schon). Das war natürlich nirgendwo
> dokumentiert, und das Problem einzugrenzen eine gewisse
> Herausforderung.

Natürlich war das dokumentiert.

Aus dem Handbuch (1986):
"Nur CP/M-80: Wegen der Art, wie lokale Variablen während der Rekursion 
behandelt werden, darf eine zu einem Unterprogramm lokale Variable nicht 
als var Parameter in rekursive Aufrufe übergeben werden"

Und das war die wichtige Einschränkung

-- 
cu://Matthias.Eißing.de

[toc] | [prev] | [next] | [standalone]


#287795

FromWolfgang Enzinger <we_usenet@nurfuerspam.de>
Date2016-12-12 23:15 +0100
Message-ID<qx8c8bkeas74$.16keejf3o237$.dlg@40tude.net>
In reply to#287753
Am 12 Dec 2016 17:47:38 GMT schrieb Ricardo Szabo:

> Gegeben ist eine Datenbank mit eMails. Die eMails haben eine
> funktionierende Bezugsverkettung, für jede eMail ist also bekannt, ob sie 0
> oder 1 Parent und wieviel Childs (0 - n) sie hat. Nun möchte ich ausgehend
> von jeder beliebigen eMail die komplette Baumstruktur anzeigen, also im
> Prinzip nix anderes als es jeder Usenet-Client auch macht.
> 
> Mir fehlt aber tatsächlich der komplette Ansatz, wie ich denn alle eMails
> rekursiv durchlaufen kann?!
> Mag mich mal jemand erleuchten?

Je nach DB-System und -Definition kann das erstaunlich trivial sein.
Stellvertetend hier SQLite: http://www.sqlite.org/lang_with.html

Also trivial im Sinne von: der Knoten im Hirn ist zwar nicht unbedingt
vollständig aufgelöst, aber es funktioniert einfach. Und zuverlässig. ;-)

[toc] | [prev] | [next] | [standalone]


#287804

FromRicardo Szabo <usenet13@rickszabo.de>
Date2016-12-13 05:17 +0000
Message-ID<eb9ej9Fikf1U1@mid.individual.net>
In reply to#287753
Stefan Ram <ram@zedat.fu-berlin.de> wrote:

>   Da Du kein bestimmtes Datenformat und keine bestimmte
>   Programmiersprache angegeben hast, habe ich das in C++
>   geschrieben und eine einfache Reihung als "Datenbank"
>   verwendet.

Ich denke, die Programmiersprache ist hierbei auch unerheblich, da es sich
um ein grundsätzliches Verständnisproblem meinerseits handelt. Tatsächlich
handelt es sich um eine programminterne Skriptsprache, die hier kaum
jemanden geläufig sein dürfte.

>   Ich stelle die Nachrichten vereinfacht durch eine Kennung
>   "id" und eine Referenz zur Bezugsnachricht "ref" dar.

So weit, so gut...

> static ::std::vector< ::std::string >mail =
> { "id:1; ref:0;"s,
>   "id:2; ref:1;"s,
>   "id:3; ref:1;"s, /* 2 */
>   "id:4; ref:2;"s,
>   "id:5; ref:2;"s };

Hiermit weisst du also bereits im Vorfeld, auf wieviel Mails du dich
insgesamt beziehen wirst und...

>   for( int i = 0; i < 5; ++i )if( id+1 == ref( i ))show( i, d+1 ); }

... verwendest die dir bekannte Anzahl hier in der FOR-Schleife, oder?

Ich werde aber im Vorfeld nicht wissen, wieviel Mails insgesamt zu dem Baum
gehören. Und irgendwie liegt genau da mein Denkproblem.

Bye
 Rick


-- 
Bevor i mi afreg, is ma liaba wurscht...

[toc] | [prev] | [next] | [standalone]


#287922

FromRicardo Szabo <usenet13@rickszabo.de>
Date2016-12-13 19:55 +0000
Message-ID<ebb223Fi4rU1@mid.individual.net>
In reply to#287804
Stefan Ram <ram@zedat.fu-berlin.de> wrote:

>   Es wird aber auch dann irgendeine Möglichkeit geben, eine
>   Endbedingung für die Schleife zu finden, da bei Ausführung
>   der Schleife bekannt ist, wie viele Nachrichten gespeichert
>   sind.

Richtig.

>   Aber, da Du ja in <eb9puqFl4j4U1@mid.individual.net> schriebst:
> |das Problem ist gelöst.
>   , ist das Problem wahrscheinlich in der Zwischenzeit gelöst.

Auch richtig. Und noch trivialer als ich es befürchtet hatte.

Lustigerweise habe ich ja die Rekursion "nach oben", also um die Wurzel zu
finden, ja bereits gehabt, aber aus irgendeinem Grund wollte mein Verstand
den umgekehrten Weg nicht verstehen. :)

In der verwendeten Skriptsprache und den eMails in einer
FastObjects-Datenbank sieht das ganze so aus:

Teil 1: Finden der Wurzel, um von dieser aus den Baum zu durchlaufen
HANDLE Tree;
EMail Eml;
IF ( !DBOIsEmpty( Eml.Ursprung ) )
REPEAT
  Eml = Eml.Ursprung;
UNTIL ( DBOIsEmpty( Eml.Ursprung ) );
_Baum( Tree, Eml, "" );

Teil 2: Die "Funktion" _Baum:
VOID _Baum( HANDLE Tree, EMail Eml, STRING Parent )
INT i;
FOR ( i = 1; i <= DBObSetGetCount( Eml.Antworten ); i++ )
	Parent = TreeInsertTreeItem( Tree, Eml.Antworten[i].Betreff, Parent,
DBOGetOID( Eml.Antworten[i] ) );
	_Baum( Tree, Eml.Antworten[i], Parent );
NEXT
  
Bye
Rick



-- 
Bevor i mi afreg, is ma liaba wurscht...

[toc] | [prev] | [next] | [standalone]


#287817

FromThomas Heuving <heuving@gmx.de>
Date2016-12-13 09:54 +0100
Message-ID<pjp4id-1km.ln1@ID-32009.user.uni-berlin.de>
In reply to#287753
Ricardo Szabo schrieb am 12 Dec 2016 17:47:38 GMT:
> Wahrscheinlich ist es eine triviale Frage, aber ich habe schon einen Knoten
> im Kopf und komme einfach nicht drauf:
>
> Gegeben ist eine Datenbank mit eMails. Die eMails haben eine
> funktionierende Bezugsverkettung, für jede eMail ist also bekannt, ob sie 0
> oder 1 Parent und wieviel Childs (0 - n) sie hat. Nun möchte ich ausgehend
> von jeder beliebigen eMail die komplette Baumstruktur anzeigen, also im
> Prinzip nix anderes als es jeder Usenet-Client auch macht.
>
> Mir fehlt aber tatsächlich der komplette Ansatz, wie ich denn alle eMails
> rekursiv durchlaufen kann?!
> Mag mich mal jemand erleuchten?

Wenn es eine MSSQL-DB ist, kanst du dir eine Stored Procedure
schreiben, in der du "with hierarchy" nutzt, welches dir rekursives
Lesen einer Tabelle nach von dir definierten Bedingungen erlaubt.
Für andere Datenbanksysteme wird es ähnliche Konstrukte geben, bei
Oracle gibt es "start with" und "connect by", Beispiele unter
https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm#i2060615

Tschüß
-- 
Thomas Heuving

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | ger.ct


csiph-web