![]() |
Abfrage von Zahlen in einem SET
Hallo!
Ich habe da ein programmiertechnisches Problem und muss mein Programm bis morgen fertig haben. Wäre cool, wenn ich eine Antwort bekommen würde, aber ich bin's ja selbst schuld :? Also, ich habe ein Set mit verschiedenen Zahlen. Um zu gucken, ob eine bestimmte Zahl in dem Set ist, kann ich ja "If a in Menge then..." benutzen. Wie kann ich aber jetzt überprüfen, ob die Zahl zweimal enthalten ist? Es soll nur eine Aktion ausgeführt werden, wenn die Zahl zweimal vorhanden ist. Naja, über eine Antwort wäre ich sehr dankbar! Schöne Nacht noch, Rüdiger |
Re: Abfrage von Zahlen einem SET
Wie soll die gleiche Zahl zwimal in einer Menge vorkommen?
eins = 1 -> 0001 zwei = 2 -> 0010 drei = 4 -> 0100 vier = 8 -> 1000
Code:
Denn ansonsten wäre es ja schon die 2
Menge := Eins;
-> 0001 Menge := Menge + Eins; -> 0001 -> 0010
Code:
Aber vielleicht ist es auch schon zu spät für mich. ;)
Menge := Eins;
-> 0001 Menge := Menge + Eins; -> 0001 Menge := Menge + Zwei; -> 0011 |
Re: Abfrage von Zahlen in einem SET
Was Robert da sagt verstehe ich jetzt nicht. 8) Aber IN bedeutet nur, daß ein Wert in der Menge = Set enthalten ist. Jedoch nicht wie oft. Ist es möglich, daß etwas mehrmals da ist, dann vergesse das Set und benutze ein Array.
[Edit] Zitat:
|
Re: Abfrage von Zahlen in einem SET
Ok, an die Arbeit... :(
Naja, vielen Dank! Ich werd's einfach anders aufbauen, vielleicht bekomm ich ja noch ne Gnadenfrist von meinem Lehrer *g* |
Re: Abfrage von Zahlen in einem SET
hallo häckie , schon mal in der hilfe von delphi geschaut ?
z.B Mengen |
Re: Abfrage von Zahlen in einem SET
Da ich nicht mehr so fit in Delphi bin habe ich es gerade mal getestet:
Delphi-Quellcode:
program SetTest;
{$APPTYPE CONSOLE} uses SysUtils; type TSomeSet = set of (eins, zwei, drei, vier); procedure PrintSet(const aMenge: TSomeSet); begin Writeln(Ord(PChar(@aMenge)^)); end; var Menge : TSomeSet; begin Menge := [eins]; PrintSet(Menge); Menge := [zwei]; PrintSet(Menge); Menge := [drei]; PrintSet(Menge); Menge := [vier]; PrintSet(Menge); Writeln('--------------'); Menge := [eins]; PrintSet(Menge); Menge := Menge + [eins]; PrintSet(Menge); Menge := Menge + [zwei]; PrintSet(Menge); Sleep(5000); end. Wie ich nicht anders erwartet habe bekomme ich:
Code:
1
2 4 8 -------------- 1 1 3 |
Re: Abfrage von Zahlen in einem SET
Moin Rüdiger,
Zitat:
Eine Menge kann jedes Element des Sets nur einmal enthalten. Würde es gehen, könnte man es so machen:
Delphi-Quellcode:
Wie man aber leicht am Ergebnis sehen kann: Es kommt keine Meldung.
type
Zahl = (eins,zwei,drei,vier); Zahlen = set of Zahl; var zWork : Zahl; znWork : Zahlen; begin zWork := zwei; znWork := [eins,zwei,zwei,vier]; znWork := znWork - [zWork]; if (zWork in znWork) and (zWork in (znWork - [zWork])) then begin ShowMessage('Zweimal'); end; end; Du kannst das auch mal im Einzelschritt durchgehen, und Dir die Werte von znWork mal anschauen. Robert hat es in seinem ersten Beitrag veranschaulicht: Die Menge [...] ist nur ein Bitfeld. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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