AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage von Zahlen in einem SET

Ein Thema von hackie3of5 · begonnen am 12. Jan 2005 · letzter Beitrag vom 12. Jan 2005
Antwort Antwort
hackie3of5

Registriert seit: 6. Jan 2005
Ort: Oberhausen
18 Beiträge
 
#1

Abfrage von Zahlen in einem SET

  Alt 12. Jan 2005, 01:35
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
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Abfrage von Zahlen einem SET

  Alt 12. Jan 2005, 01:41
Wie soll die gleiche Zahl zwimal in einer Menge vorkommen?

eins = 1 -> 0001
zwei = 2 -> 0010
drei = 4 -> 0100
vier = 8 -> 1000

Code:
Menge := Eins;
-> 0001
Menge := Menge + Eins;
-> 0001
Denn ansonsten wäre es ja schon die 2
-> 0010
Code:
Menge := Eins;
-> 0001
Menge := Menge + Eins;
-> 0001
Menge := Menge + Zwei;
-> 0011
Aber vielleicht ist es auch schon zu spät für mich.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Abfrage von Zahlen in einem SET

  Alt 12. Jan 2005, 01:51
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:
und muss mein Programm bis morgen fertig haben
Das wird wohl nichts werden. Der Unterschied ist schon sehr bedeutend !
Gruß
Hansa
  Mit Zitat antworten Zitat
hackie3of5

Registriert seit: 6. Jan 2005
Ort: Oberhausen
18 Beiträge
 
#4

Re: Abfrage von Zahlen in einem SET

  Alt 12. Jan 2005, 01:59
Ok, an die Arbeit...
Naja, vielen Dank! Ich werd's einfach anders aufbauen, vielleicht bekomm ich ja noch ne Gnadenfrist von meinem Lehrer *g*
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#5

Re: Abfrage von Zahlen in einem SET

  Alt 12. Jan 2005, 02:03
hallo häckie , schon mal in der hilfe von delphi geschaut ?

z.B
Mengen
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Abfrage von Zahlen in einem SET

  Alt 12. Jan 2005, 02:19
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Abfrage von Zahlen in einem SET

  Alt 12. Jan 2005, 03:43
Moin Rüdiger,

Zitat von hackie3of5:
Wie kann ich aber jetzt überprüfen, ob die Zahl zweimal enthalten ist?
Gar nicht.
Eine Menge kann jedes Element des Sets nur einmal enthalten.

Würde es gehen, könnte man es so machen:

Delphi-Quellcode:
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;
Wie man aber leicht am Ergebnis sehen kann: Es kommt keine Meldung.
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz