Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Aiuto classifica scacchi football

3 views
Skip to first unread message

LuigiPaolo

unread,
Nov 30, 2014, 3:39:53 PM11/30/14
to
il codice di cui sotto fa parte di un algoritmo

per stilare la classifica di un torneo di scacchi(un pò più articolata che
del calcio).

Il tutto si base sugli insiemi Set del Delphi7 e la classifica

funziona perfettamente solo se i giocatori non superano il numero di 255.

Il problema è che i Set non possono contenere più di 255 elementi

mentre un torneo di scacchi può arrivare anche a 400-500 partecipanti

Pertanto devo per forza lavorare con gli array.

Qualche tempo fa mi fu suggerito l'utilizzo delle funzioni

Contains e SetBit di cui sotto,rispettivamente al posto della

clausa IN e INCLUDE dei Set,lo amico che me le ha inviate

non le ha testate ed io nonostante molti sforzi non sono riuscito

a risolvere il problema.

Si tratterebbe di sostituire le clause IN e INCLUDE con funzioni

adatte agli array.

Inoltre vorrei sapere come si fa a vuotare un array,con i Set

bastava Set1[] o Set2[]

Grazie per chi mi può aiutare anche dandomi solo qualche idea

Voltolini Luigi

?

/////////Funzioni suggerite

type

TMySet = array[0..63] of Byte; // 86 byte = 512 bit

function Contains( const S : TMyset; bit : integer ) : boolean;

begin

Result := (S[ bit div 8 ] and (1 shr (bit mod 8) )) <> 0;

end;

procedure SetBit( var S : TMyset; bit : integer );

begin

S[ bit div 8 ] := S[ bit div 8 ] or (1 shr (bit mod 8) );

end;

//////


?

Codice funzionante con i SET da sostituire

con gli ARRAY....

?

?

////// Set1, Set2: set of 1..255;

?

with Giocatore[ColonnaA] do

begin

if (ColonnaB in Set1) then begin

Include(Set2, ColonnaB)

end;


if not (ColonnaB in Set1) then begin

Include(Set1, ColonnaB);

end;

....

with Giocatore[ColonnaB] do

begin

if (ColonnaA in Set1) then begin

Include(Set2, ColonnaA)

end;


if not (ColonnaA in Set1) then begin

Include(Set1, ColonnaA);

end;


0 new messages