Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schnittmenge bilden von 2 Mengen??? (https://www.delphipraxis.net/93602-schnittmenge-bilden-von-2-mengen.html)

webmarathon 8. Jun 2007 07:10


Schnittmenge bilden von 2 Mengen???
 
hallo

ich will gerade die Schnittmengen bilden von 2 Mengen. Eigentlich ist das Zeichen doch * aber irgendwie sagt der andauernd, Operator ist auf Operandentyp nicht anwendbar. Weiß jemand was da falsch ist?

Delphi-Quellcode:
var
  Form1: TForm1;
  mengea: Tmengea;
  mengefe: Tmengefe;       //Menge Feuer
  mengewa: Tmengewa;       //Menge wasser


implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
  var fewa:char;
begin
  mengea:=[];
  mengefe:=Feuer;
  mengewa:=Wasser;
  fewa:=mengefe*mengewa;

DeddyH 8. Jun 2007 07:25

Re: Schnittmenge bilden von 2 Mengen???
 
Hallo, probier das mal aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Menge1,Menge2,Ergebnis,Differenz: set of byte;
begin
  Menge1 := [1,2,3,5,9];
  Menge2 := [3,4,5,6,9];
  Ergebnis := Menge1 + Menge2;
  Differenz := Ergebnis - (Menge1 - Menge2);
  Ergebnis := Differenz - (Menge2 - Menge1);
end;

Hawkeye219 8. Jun 2007 09:22

Re: Schnittmenge bilden von 2 Mengen???
 
Hallo,

sind Tmengefe und Tmengewa wirklich Mengentypen oder nur Aufzählungs- bzw. Unterbereichstypen? Die von dir angegebene Fehlermeldung erhalte ich selbst bei der Verwendung von inkompatiblen Mengentypen nicht.

Delphi-Quellcode:
type
  TType1 = (red, yellow, green, blue); // Aufzählungstyp
  TType2 = red..green;                 // Unterbereichstyp
  TType3 = set of red..blue;           // Mengentyp
Das Ergebnis einer Mengenverknüpfung kann natürlich niemals vom Typ char sein.

Gruß Hawkeye

DeddyH 8. Jun 2007 09:33

Re: Schnittmenge bilden von 2 Mengen???
 
Zitat:

Zitat von Hawkeye219
Das Ergebnis einer Mengenverknüpfung kann natürlich niemals vom Typ char sein.

Stimmt, das war mir gar nicht aufgefallen. Ich habe allerdings diese Fehlermeldung bekommen, als ich versucht habe, 2 Mengen miteinander zu multiplizieren. Also muss man wohl den "umständlichen" Weg gehen. Hier noch einmal etwas anders formuliert.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Menge1,Menge2,Ergebnis: set of byte;
begin
  Menge1 := [1,2,3,4,5,9,11];
  Menge2 := [0,4,5,6,9];
  //Schnittmenge = Vereinigungsmenge - Differenzmenge
  //Differenzmenge = Elemente aus Menge1, die nicht in Menge2 und umgekehrt
  Ergebnis := (Menge1 + Menge2) - ((Menge1 - Menge2) + (Menge2 - Menge1));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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