Samou85
Messages postés46Date d'inscriptionmardi 2 juin 2009StatutMembreDernière intervention 7 octobre 2009
-
2 juin 2009 à 17:24
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 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à!
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 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;
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 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.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Samou85
Messages postés46Date d'inscriptionmardi 2 juin 2009StatutMembreDerniè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????
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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*
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 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
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 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)
Samou85
Messages postés46Date d'inscriptionmardi 2 juin 2009StatutMembreDerniè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!!!!
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 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
Samou85
Messages postés46Date d'inscriptionmardi 2 juin 2009StatutMembreDerniè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!!
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 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)