AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mini-Wettbewerb: Bedingter Vergleichs-Algo
Thema durchsuchen
Ansicht
Themen-Optionen

Mini-Wettbewerb: Bedingter Vergleichs-Algo

Ein Thema von RuX · begonnen am 2. Jun 2005 · letzter Beitrag vom 2. Jun 2005
Antwort Antwort
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#1

Mini-Wettbewerb: Bedingter Vergleichs-Algo

  Alt 2. Jun 2005, 13:52
Für folgendes Problem suche ich einen möglichst einfachen Algorithmus:
- es sollen bestimmte felder von 2 records vergleicht werden
- es kann angegeben werden welche felder verglichen werden sollen
- ergebnis = true wenn alle felder die vergleicht werden sollen übereinstimmen, false wenn nur eins nicht übereinstimmt

Klingt einfach, isses so natursprachlich ausgedrückt auch, ist auch leicht verständlich, bloß das ganze programmiertechnisch umzusetzen ist relativ (zum Problem gesehen) aufwendig imo.
Ich habe zwar schon eine Lösung, bloß die scheint mir anhand des Problems ziemlich komplex, da viele Blöcke, Variablen etc.

Beispiel Record
Delphi-Quellcode:
type TBsp = record
  A: String;
  B: Integer;
  C: Double;
end;
Record 1, Record 2... Beispiele:

Delphi-Quellcode:
Vergleicht werden sollen A, B, C

Record1.A = 'asdf'
Record1.B = 123
Record1.C = 123.45

Record2.A = 'asdf'
Record2.B = 123
Record2.C = 123.45

result = true
Delphi-Quellcode:
Vergleicht werden soll C

Record1.A = 'asdf'
Record1.B = 123
Record1.C = 123.45

Record2.A = 'jklö'
Record2.B = 456
Record2.C = 123.45

result = true
Delphi-Quellcode:
Vergleicht werden sollen A, C

Record1.A = 'asdf'
Record1.B = 123
Record1.C = 123.45

Record2.A = 'jklö'
Record2.B = 456
Record2.C = 123.45

result = false
Wer den kürzesten Delpih Algo abliefert kriegt... respekt
Delphi3/Delphi5/Delphi7/Delphi8 User
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Mini-Wettbewerb: Bedingter Vergleichs-Algo

  Alt 2. Jun 2005, 14:13
Hallo ,
gibt es immer nur A, B und C oder ist die Anzahl variabel?

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: Mini-Wettbewerb: Bedingter Vergleichs-Algo

  Alt 2. Jun 2005, 14:18
Hm, also wenn schon als Wettbewerb, dann bitte mit (annerkennugns) Preis,
Respekt kann man hier doch ohne Einschränkungen dne meisten zugestehen.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Mini-Wettbewerb: Bedingter Vergleichs-Algo

  Alt 2. Jun 2005, 14:19
Da, büdde

Delphi-Quellcode:
type
  TBspField = (bfA, bfB, bfC);
  TBspFieldSet = set of TBspField;

function Compare(A, B: TBsp; Fields: TBspFieldSet): Boolean;
begin
  Result := True;
  if bfA in Fields then Result := Result and (A.A = B.A);
  if bfB in Fields then Result := Result and (A.B = B.B);
  if bfC in Fields then Result := Result and (A.C = B.C);
end;
Ich hoffe es hilft dir
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#5

Re: Mini-Wettbewerb: Bedingter Vergleichs-Algo

  Alt 2. Jun 2005, 14:25
Zitat von freak4fun:
Hallo ,
gibt es immer nur A, B und C oder ist die Anzahl variabel?

MfG
freak
achso ja, vergessen zu sagen. also in meinem fall ist es fest definiert welcher typ von record verglichen werden soll und somit auch die anzahl und arten der felder.

in meiner umsetzung hatte ich mir eine enumeration mit allen feldern gebaut + ein set davon damit ich wusste welche vergleicht werden sollen.
alternativ wäre noch eine nachbildung des records bloß mit boolschen variablen vorstellbar.

dynamischer brauchts wegen mir also nicht zu sein.

Zitat:
Hm, also wenn schon als Wettbewerb, dann bitte mit (annerkennugns) Preis,
Respekt kann man hier doch ohne Einschränkungen dne meisten zugestehen.
is halt n geek wettbewerb außerdem ist die genugtuung den "besten" algo geschrieben zu haben auch kein schlechter preis

Zitat von Dax:
Da, büdde

Delphi-Quellcode:
type
  TBspField = (bfA, bfB, bfC);
  TBspFieldSet = set of TBspField;

function Compare(A, B: TBsp; Fields: TBspFieldSet): Boolean;
begin
  Result := True;
  if bfA in Fields then Result := Result and (A.A = B.A);
  if bfB in Fields then Result := Result and (A.B = B.B);
  if bfC in Fields then Result := Result and (A.C = B.C);
end;
Ich hoffe es hilft dir
Das war auch mein erster ansatz, leider klappt das so nicht, da result von anfang an true ist das heißt auch wenn nichts übereinstimmt ists true! result von anfang an auf false setzen klappt hier leider auch nicht
Delphi3/Delphi5/Delphi7/Delphi8 User
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Mini-Wettbewerb: Bedingter Vergleichs-Algo

  Alt 2. Jun 2005, 14:26
Dann eben so ^^

Delphi-Quellcode:
type
  TBspField = (bfA, bfB, bfC);
  TBspFieldSet = set of TBspField;

function Compare(A, B: TBsp; Fields: TBspFieldSet): Boolean;
begin
  Result := Fields <> [];
  if bfA in Fields then Result := Result and (A.A = B.A);
  if bfB in Fields then Result := Result and (A.B = B.B);
  if bfC in Fields then Result := Result and (A.C = B.C);
end;
  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 16:48 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