![]() |
Mengenoperatoren
moin 8)
Kann mir jemand die Mengenoperatoren erklären und die syntax wie man sie anwendet zeigen? in google wird unter "delphi mengenoperatoren" gerade mal 1 1/2 seiten angezeigt... super. Die Delphi hilfe kapier ich nicht ganz, da ist mir zuviel O X Y usw drin.... |
Re: Mengenoperatoren
moin,
die OH ist hier zwar knapp bemessen, aber das wichtigste sagt sie dann doch :wink: nur halt in der mathematischen Kurzversion :mrgreen: Hier nochmal ausführlicher: A := [1,2,3] B := [3,4,5] + Der + Operator bildet die Vereinigungsmenge aus den Operanden. D.h. im Ergebnis befinden sich alle Elemente die in A und/oder B enthalten sind: A+B = [1,2,3,4,5] - Der - Operator bildet die Differenzmenge. D.h. im Ergebnis befinden siach alle Elemente die in A aber nicht in B enthalten sind: A-B = [1,2] * Der * Operator bildet die Schnittmenge aus den Operanden. D.h. im Ergebnis befinden sich alle Elemente die sowohl in A als auch in B entahlten sind: A*B = [3] soweit dazu. Fortsetzung folgt :mrgreen: |
Re: Mengenoperatoren
moin xineohp,
danke für die beschreibung :thumb: dennoch versteh ich sie nicht ( :mrgreen: )..ich weiss ehrlich gesagt nicht wofür A und B stehen. Sagen wir mal ich habe folgendes:
Delphi-Quellcode:
type
tmyset = set of (asdf, qwert); ... var myset: tmyset; begin // wie mach ich das nun wenn ich wissen möchte ob sowohol "asdf" als auch "qwert" drinnen sind? if ([asdf, qwert] * myset) then... //so? (geht leider nicht) :\ end; |
Re: Mengenoperatoren
Sets (Mengen) sind in Delphi einfach Bit-Arrays. Die Groesse ist auf 8 Bytes beschraenkt, also maximal 256 Elemente.
Code:
Das soll das klassische Diagramm mit zwei ueberschneidenden Kreisen sein.
+-------+---+-------+
| A | C | B | +-------+---+-------+ AC ist die eine Menge und CB die andere. C ist die Schnittmenge. In Delphi ist A * B die Schnittmenge, also AC * CB = C. AC - CB = A, CB - AC = B, A + C = AC, C + B = B + C = CB. Dann gibt es noch den Operator "in" mit booleschem Ergebnis, der schlicht prueft ob ein bestimmtes Element im Set ist. |
Re: Mengenoperatoren
Hi Pseudemys Nelsoni,
Zitat:
Delphi-Quellcode:
müsste stimmen.
if ([asdf, qwert] * myset = [asdf, qwert]) then...
Greetz alcaeus |
Re: Mengenoperatoren
Ich hoffe mal dass
![]() |
Re: Mengenoperatoren
danke euch 4, nun verstehe ichs auch :)
|
Re: Mengenoperatoren
Zitat:
zu deinem Beispiel:
Delphi-Quellcode:
Der * Operator gibt die Elemente zurück die sowohl in A (hier: A=[awert,bwert]) als auch in B (hier: B=myset) enthalten sind. D.h. das Ergebnis von A*B ist eine Menge! kein boolscher Ausdruck! Wenn du jetzt überprüfst ob die Schnittmenge aus A und B gleich A ist, dann ist klar das A in B enthalten ist.
If ([awert,bwert]*myset = [awert,bwert]) then // ...
|
Re: Mengenoperatoren
Andererseits müsste auch
Delphi-Quellcode:
zum gewünschten Ergebnis führen.
If ([awert,bwert]<=myset) then //...
|
Re: Mengenoperatoren
Es geht auch "if myset >= [asdf, qwert] then", denn die Vergleichsoperatoren sind auch alle definiert.
A > B gilt wenn B eine echte Teilmenge von A ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz