Un réel comme résultat d'une fonction ? [Résolu]

John Dogget 390 Messages postés vendredi 18 juin 2004Date d'inscription 7 mai 2009 Dernière intervention - 22 juil. 2006 à 21:32 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 23 juil. 2006 à 21:31
Bonjour à tous.

J'ecris une fonction qui charge une liste d'opérations depuis un fichier. Certaines de ces opérations doivent être executées, d'autres non, on dira que ces opérations sont actives ou inactives.

Je souhaiterais que ma fonction renvoie un nombre réel sous le format suivant
<Nombre total de règles>,<Nombre de règles actives>

Ainsi si ma fonction charge 10 règles, dont 5 seulement sont actives, elle renvera le nombre "10,5"

Est'il possible d'assigner à part les deux partie d'un nombre réel (avant et après la virgule) ?

Par exemple ...
PartieEntière(Nombre):=10;
ParieRéelle(Nombre):=5;

En esperant m'être fait comprendre ...
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 23 juil. 2006 à 02:26
3
Merci
Oui. Si c'est un réel tu peut essayer ceci.

function division(nb: integer): float;
var
  res : float;
begin
  res := nb;
  while (res > 1) do
     res : = res / 10
  result := res;
end ;

PartieEntiere : = 10
PartieRelle := 5;
Result := PartieEntiere + division(PartieRelle);

Il y a peut être une méthode un peu plus élégante, mais je pense que celle ci devrait fonctionner.

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cptpingu
John Dogget 390 Messages postés vendredi 18 juin 2004Date d'inscription 7 mai 2009 Dernière intervention - 23 juil. 2006 à 09:41
0
Merci
C'est la méthode que j'avais employé, à defaut d'autre chose
Commenter la réponse de John Dogget
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 23 juil. 2006 à 10:16
0
Merci
Salut,

en fait ce que tu désire c'est pouvoir renvoyer deux valeurs dans une Variable et de pouvoir les récuperer.

Il existe d'autres possibilitées, mais en voici une que tu pourras peut être trouver utile :

Function MaFonction: Integer;
Var PartieEntiere, PartieReelle : Integer;
begin
  PartieEntiere := 10;  // ici on simule le résultat de ta fonction
  PartieReelle  := 5;
  Result := MAKELong(PartieEntiere, PartieReelle);  // et ici on affecte les deux valeurs à Result 
end ;





procedure TForm1.Button1Click(Sender: TObject);
Var PartieEntiere, PartieReelle : Integer;
begin
  PartieEntiere : = Loword(MaFonction);  // Récupération de la première Valeur 
  PartieReelle  := hiword(MaFonction);   // Récupération de la deuxième Valeur
  Label1.Caption := Format('%d, %d', [PartieEntiere, PartieReelle]);  // Et pour finir un affichage pour le contrôle des Valeurs
end;

@+
Cirec
Commenter la réponse de Cirec
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 23 juil. 2006 à 13:09
0
Merci
Tu pourrais aussi renvoyer une structure, non ?
Commenter la réponse de cptpingu
John Dogget 390 Messages postés vendredi 18 juin 2004Date d'inscription 7 mai 2009 Dernière intervention - 23 juil. 2006 à 15:23
0
Merci
Je ne sais pas si il est possible de renvoyer une structure, en revanche un pointeur de structure c'est certain que ça pourrait marcher
Commenter la réponse de John Dogget
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 23 juil. 2006 à 17:44
0
Merci
Il est tout a fait possible de renvoyer une structure. Mais c'est plus propre de renvoyer un pointeur sur structure.
Commenter la réponse de cptpingu
John Dogget 390 Messages postés vendredi 18 juin 2004Date d'inscription 7 mai 2009 Dernière intervention - 23 juil. 2006 à 18:30
0
Merci
Ok ...
Donc effectivement, je pourrais tout aussi bien renvoyer une structure
J'ai l'embarra du choix maintenant !

Merci à vous
Commenter la réponse de John Dogget
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 juil. 2006 à 21:24
0
Merci
type

  TRegles = record
     case integer of
       0: (code : dword);
       1: (Total,Active: word);
  end;

function blablabla : TRegles;
begin
  total := 10;
  active:= 5;
// ... //
  result.total := total;
  result.active:= active;
end;


var

  Tampax : TRegles;

begin
  Tampax := blablabla;
  label1.caption := format('total : %d, actives : %d, code : %.8x',
                           [tampax.total, tampax.active, tampax.code]);
end;




<hr size="2" width="100%" />
Croc (click me)
Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 juil. 2006 à 21:31
0
Merci
ATTENTION AUX APELS REDONDANT DE FONCTIONS!




procedure TForm1.Button1Click(Sender: TObject);
Var PartieEntiere, PartieReelle : Integer;
begin
  PartieEntiere := Loword(MaFonction);  // Récupération de la première Valeur 
  PartieReelle  := hiword(MaFonction);   // Récupération de la deuxième Valeur
  Label1.Caption := Format('%d, %d', [PartieEntiere, PartieReelle]);  // Et pour finir un affichage pour le contrôle des Valeurs
end ;

<hr size ="2" width= "100%" />
Function MaFonction : dword;
Var CHigh, CLow : word;
begin
  CHigh  : = 10;
  CLow   := 5;
  Result := MakeLong(CHigh, CLow);
end ;

procedure TForm1.Button1Click(Sender: TObject);
Var Code : cardinal;
    CLow, CHigh : word;
begin
  Code : = MaFonction;
  CLow := Loword(Code);
  CHigh:= Hiword(Code);
  Label1.Caption := Format('%d, %d', [CHigh,CLow]);
end ;
<hr size ="2" width="100%" />Croc (click me)
Commenter la réponse de f0xi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.