Delphi!

Résolu
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009 - 2 juin 2009 à 17:24
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 3 juin 2009 à 14:22
Bonjour à tous!
je voudrais savoir s'il existe une fonction prédéfinie en Delphi qui donne le cardinal d'un ensemble d'entiers, ainsi qu'une fonction prédéfinie donnant le minimum entre deux nombre entiers, voilà!

en espérant une réponse, merci d'avance!

12 réponses

cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 juin 2009 à 17:54
Bj Samou!

1. Si tu as une varaible de ton ensemble (tableau) définie par array of MesChoses (c'est à dire un tableau ouvert) alors tu doit
    pouvoir identifier le  nombre d'élément parl'instruction High.
    Ex : Var MonEnsemble : array of  MesChoses;
           Tu peux écrire High(MonEnsemble) qui te donnera le Nb d'éléments - 1 car un tableau ouvert commence tj à 0. Voir aide delphi!

2. Min(A,B) donne leplus petit de (A,B) = Unité Math de delphi;

Bien à toi

Jean_Jean
3
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009
2 juin 2009 à 19:00
bonjour jean jean


D'abord merci de répondre à ma question, mais ce que je veux c'est le cardinal d'un ensemble de type "set of integer" .

pour ce qui est de ta réponse à la deuxième question  je n'ai pas compris ce qu'est "unité match"

voilà si tu pouvais m'aider je t'en serais reconnaissante!
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 juin 2009 à 20:04
1. Si tu ne sais pas ce qu'est une unité, alors je te conseille d'acquérir un tutorial gratuit sur Delphi. Il y en a plein. Google télécharger Cours gratuit Delphi par exemple. L'unité Math est donc un ensemble de fonctions mathématiques distribué par Borland avec Delphi dans le répertoire source.

2. Pour l'ensemble SET, je ne sais pas. Quand j'ai besoin de compter j'utilise des tableaux, ça offre plus de possibilités.

Jean_Jean
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
2 juin 2009 à 20:13
function Min(A, B: Integer): Integer;
begin
if A < B then Result := A else Result := B;
{
Si A < B, alors on renvoie A.
Si A = B, alors on renvoie B.
Si A > B, alors on renvoie B.
}
end;

Cordialement, Bacterius !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009
2 juin 2009 à 21:35
Merci encore jean jean, il est vrai que je ne connais pas toute les composantes de DELPHI meme si j'ai lu quelques tutoriels mais le fait est que je suis prise par le temps; alors s'il te plait je voudrais savoir où se trouve le répertoire source???? 
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
2 juin 2009 à 21:42
Tu cherchais une fonction donnant le plus petit entier entre deux entiers.
Merci encore d'avoir pris le temps de lire la fonction que j'avais concoctée avec amour pour toi. J'avais même mis des commentaires ... *sort en claquant la porte*

Cordialement, Bacterius !
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 juin 2009 à 22:28
@ Samou!

1.  Euh, autant pour moi, l'unité sorce Math.pas n'est plus disponible directement. On trouve par contre sa version compilée Math.dcu qui est ici : C:\Program Files\Borland\Delphi7\Lib
2.  Donc si tu veux savoir tout ce qu'il y a dans l'unité Math, il te suffit d'utiliser l'aide delphi. tu fait rechercher Math et tu as toutes les fonctions mathématiques del'unité qui y est décrite. J'utilise perso une autre méthode lorsque je veux connaître l'unité à laquelle appartient une fonction.
Je tape au milieu du code le nom de la fonction, par exemple Min, je met mon curseur dessus et je tape F1, tu auras accès directement au détail... 
3. Bactérius t'a écris la fonction telle qu'elle est écrite dans Math.pas pour que tu comprennes mieux.  Pédagogique ce Bactérius!!
Bon code!
Jean_Jean
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
2 juin 2009 à 23:25
"Quand j'ai besoin de compter j'utilise des tableaux, ça offre plus de possibilités."

heu les set et les array, c'est pas vraiment la meme chose. Chacun des 2 a son propre interet, et sont bien distincts.

pour parcourir un ensemble tu peux faire :

TMySet = (ms1, ms2, ms3);

var
  ms: TMySet;
begin
  for ms := Low(TMySet) to High(TMySet) do
    showMessage(IntToStr(Ord(ms))); //Ord renvoie la cardinalité de ms (0 pour ms1, 1 pour ms2, ...)
end;

tu peux aussi specifier toi meme les valeur
type
  TMySet = (ms1=1, ms2=2)
0
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009
2 juin 2009 à 23:33
Merci pour ton aide Bactérius contrairement à ce que tu crois j'ai aussi lu ta réponse mais le fait est qu'elle ne correspondait pas exactement à ce que je cherchais ....merci quand meme!!!!
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
3 juin 2009 à 08:21
Salut Guillemouze
Tu as raison de me reprendre : "Quand j'ai besoin de compter j'utilise des tableaux, ça offre plus de possibilités."
Comme elle ne nous a pas précisé ce qu'elle voulait faire, je me suis permis...
Par contre je ne me souvenais plus que Low et  High fonctionnaient également sur les ensembles...
Bien à vous

Jean_Jean
0
Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009
3 juin 2009 à 11:22
Bonjour Guillemouze!
D'abord  Merci de ta réponse; mais j'ai eu un problème en essayant de l'implémenter car dans ton code tu as posé :

var
  ms: TMySet;          //donc ms est un ensemble

 

 mais plustard tu utlilises "ms" pour parcourir l'ensemble or "ms" doit etre de type ordinal pour servir d'indice de parcours, je vais expliquer un peu mieux mon problème:
 
j'ai un tableau(ARRAY) où chaque case contient un ensemble(SET) d'entier; et dans une autre étape j'ai besoin de calculer le cardinal de l'intersection d'ensemble.

voilà j'espere que c'est plus clair;....de l'aide serait la bienvenue!!

MERCI.
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
3 juin 2009 à 14:22
ah oui merde, je suis parti sur les enum au lieu des set

dans ce cas je pense qu'il faut que tu fasse ton calcul a la mano:

type
 TMonEnum = (...);
TMesEnums = set of TMonEnum;
TMonArray = array of TMesEnums;

var
  me: TMonEnum;
  i: integer;
  tab: TMonArray
  card: integer;
begin
  ...
  for i := 0 to Length(tab)-1 do
  begin
    card := 0;
    for me := Low(TMonEnum) to High(TMonEnum) do
       if me in tab[i] then
           Inc(card);
  end;

Petite info : tu peut caster les Set en Byte (ou word ou integer selon la taille de l'enum associé)
dans ce cas, chaque element de l'enum a un bit distinct. ainsi, si ton set contient le 1er et le 3eme element de l'enum, il vaudra 5 (00000101 en binaire)
0
Rejoignez-nous