IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Pascal Discussion :

Une console et ses fonctions


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut Une console et ses fonctions
    En utilisant Algebrus j'ai eu l'idée de faire pour mes programmes Flash Pascal une console avec des instructions telles que Write(), ou même Info() ou ShowVec().

    Pour le moment j'en suis à chercher comment je pourrais m'y prendre. Voici mon premier essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    program essaiConsole;
     
    {$FRAME_WIDTH 640}
    {$FRAME_HEIGHT 300}
    {$FRAME_RATE 12}
    {$BACKGROUND $FFFFFF}
     
    uses
      Flash8;
     
    var
      t: textField;
      f: textFormat;
      a: array of string;
      i: integer;
     
    const
      l = 15;
     
    procedure initConsole;
    begin
      f := textFormat.create('Georgia', 16);
      f.color := $000088;
      t := textField.create(_root, 't', 0, 0, 0, 640, 300);
      t.setNewTextFormat(f);
    end;
     
    procedure writeLn(s: string);
    var
      i: integer;
    begin
      //
      a[Length(a)] := s;
      //
      if Length(a) <= l then
        t.text := t.text + a[Length(a)-1] + #13
      else
        begin
          t.text := '';
          for i := 0 to l - 1 do t.text := t.text + a[i + Length(a) - l] + #13;
        end;
    end;
     
    begin
      initConsole;
      for i := 1 to 20 do
        writeLn('ligne ' + intToStr(i));
    end.
    Je n'ai pas réussi à trouver une combinaison qui tombe juste entre la taille de la police, le nombre de lignes et la hauteur du champ.

    Sinon, le tableau de chaînes est-il une bonne idée ? Et d'utiliser un seul TextField ?

    J'ai vu dans l'unité Flash8 la propriété multiline. A quoi sert-elle exactement ?
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Pour ce genre de chose il vaut mieux prendre une police non-proportionnelle comme "Courier New"

    sinon tu peux jouer avec une police Bitmap
    Nom : Presse-papiers-1.jpg
Affichages : 167
Taille : 12,8 Ko

    mais ça pose quelque problème de clavier...
    console.zip
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    Oui, "Courier New", c'est mieux. J'ai fait la modification.

    J'aime beaucoup ton FlashDos.

    Et tout en étant amusant, c'est en même temps un exemple très utile. On peut en faire, des choses, avec une police Bitmap...
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    ah au fait, "multiline" c'est pour que la touche ENTREE permette de passer à la ligne dans un Textfield de type input
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ah au fait, "multiline" c'est pour que la touche ENTREE permette de passer à la ligne dans un Textfield de type input
    C'est pas mal !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    program VotreNom;
     
    {$FRAME_WIDTH 640}
    {$FRAME_HEIGHT 300}
    {$FRAME_RATE 12}
    {$BACKGROUND $838383}
     
    uses
      Flash8;
     
    type
      TEditBox = class(TextField)
        procedure onKeyDown;
      end;
     
    var
      e: TEditBox;
      t: TextField;
      f1, f2: textFormat;
     
    procedure TEditBox.onKeyDown;
    begin
      if Key.getAscii = 13 then
      begin
        t.Text := e.Text;
      end;
    end;
     
    begin
      f1 := textFormat.create('Courier New', 16);
      f1.color := $008000;
      //
      f2 := textFormat.create('Courier New', 16);
      f2.color := $000080;
      //
      e := TEditBox.Create(_root, 'entree', 0, 10, 10, 620, 130);
      e.type := 'input';
      //
      e.multiline := true;
      //
      Selection.setFocus(e);
      Key.addListener(e);
      e.setNewTextFormat(f1);
      //
      t := TextField.Create(_root, 'sortie', 1, 10, 160, 620, 130);
      t.setNewTextFormat(f2);
     
      _root.opaqueBackground := $F8FCF8;
    end.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut Traitement récursif d'une chaîne de caractères
    Bonsoir !

    J'ai repris mon projet d'une console pour des exercices de programmation avec Flash-Pascal. Par console j'entends une fenêtre avec entrée et sortie de texte. L'idée serait d'utiliser Flash-Pascal comme on utilise souvent JavaScript ou PHP, lorsqu'on veut permettre au visiteur d'une page d'essayer un programme.

    Le programme que je vous propose a un affichage en trois parties : un texte statique, une boîte d'entrée, un texte pour les résultats. La présentation est encore très perfectible, mais ça fonctionne.

    Vous remarquerez qu'on peut faire défiler les résultats avec la souris lorsqu'ils dépassent la capacité du TextField.

    Cet exemple pourrait aussi être l'occasion de revenir sur un sujet abordé il y a quelque temps dans une autre discussion, à savoir le traitement des tâches longues. Mon transpositeur fonctionne correctement jusqu'à 6 ou 7 caractères mais au-delà ça ne va plus.

    Vous me direz que la vocation de Flash-Pascal n'est pas d'effectuer des tâches longues, mais c'est toujours intéressant d'étudier le fonctionnement des choses.

    Transpositions.swf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    { Transpositions.pas
      Exemple Flash-Pascal
      R. Chastain }
     
    program Transpositions;
     
    uses
      Flash8;
     
    {$FRAME_WIDTH 600}
    {$FRAME_HEIGHT 400}
     
    type
      TEditBox = class(TextField)
        procedure onKeyDown;
      end;
     
    var
      e: TEditBox;
      t: TextField;
      s: string;
      c: integer;
     
    function Transpose(pS: string; n: integer): string;
    var
      temp: string;
      i, L: integer;
    begin
      temp := '';
    { Par exemple,
      si pS = 'abcde'
      et n = 3
      alors }
      L := Length(pS);
    { L = 5 }
      for i := 1 to L - n do temp := temp + pS[i];
    { temp = 'ab' }
      temp := temp + pS[l];
    { temp = 'ab' + 'e' }
      for i := L - n + 2 to L do temp := temp + pS[i - 1];
    { temp = 'abe' + 'cd' }
      result := temp;
    { result = 'abecd' }
    end;
     
    procedure Generateur(pS: string; n: integer);
    var
      i: integer;
      temp: string;
    begin
      temp := pS;
     
      for i := 1 to n do
      begin
        temp := Transpose(temp, n);
        if n = 1 then
        begin
          Inc(c);
          t.text := t.text + temp + ' ' + IntToStr(c) + #13
        end
        else
          Generateur(temp, n - 1);
      end;
    end;
     
    procedure TEditBox.onKeyDown;
    begin
      if Key.getAscii = 13 then
      begin
        s := e.text;
        t.text := ''; c := 0;
        Generateur(s, Length(s));
      end;
    end;
     
    begin
      with TextField.Create(_root, 'label', 0, 0, 0, Stage.Width-1, 4*16+4) do
      begin
        setNewTextFormat(TextFormat.Create('Courier New', 12));
        text := "Transpositions d'une chaîne de caractères."#13
              + 'Programme Flash-Pascal.'#13
              + 'Votre saisie ?';
      end;
     
      e := TEditBox.Create(_root, 'input', 1, 0, 3*16+4, Stage.Width-1, 16+4);
      e.setNewTextFormat(textFormat.Create('Courier New', 12));
      e.type := 'input';
      e.border := true;
      Selection.setFocus(e);
      Key.addListener(e);
     
      t := TextField.Create(_root, 'output', 2, 0, 3*16+4+16+4, Stage.Width-1,
                            Stage.Height - (3*16+4+16+4));
      t.SetNewTextFormat(TextFormat.Create('Courier New', 12));
      t.text := '';
      c := 0;
    end.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    pour le coup c'est assez simple à paralléliser avec un timer, tu remplaces la boucle par le traitement de "n" itérations à chaque fois que le timer se déclenche, avec "n" suffisamment petit pour ne pas bloquer le tout.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    Je n'ai pas trouvé la solution (il me semble qu'il faudrait repenser tout le programme) mais j'ai retravaillé ma console. A la différence du code précédent, l'animation ne s'élargit pas aux dimensions du navigateur mais conserve une taille fixe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stage.scaleMode := 'noScale';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    program console_02;
     
    uses
      Flash8, Couleurs;
     
    {$FRAME_WIDTH 600}
    {$FRAME_HEIGHT 400}
    {$BACKGROUND $4169E1}
     
    const
      nomPrg = 'Console.'#13
             + 'Programme FlashPascal.';
      invite = 'Votre mot ?';
     
    type
      TEditBox = class(TextField)
        procedure onKeyDown;
      end;
     
    var
      e: TEditBox;
      t1, t2, t3: TextField;
      f1: TextFormat;
      sw, sh: Number;
     
    procedure TEditBox.onKeyDown;
    begin
      if Key.getAscii = 13 then
      begin
        t3.text := 'Votre mot est "' + e.text + '".';
      end;
    end;
     
    begin
      f1 := TextFormat.Create('Courier New', 13);
     
      sw := Stage.Width;
      sh := Stage.Height;
     
      t1 := TextField.Create(_root, 'nomPrg', 0, 0, 0*18, sw-1, 2*18);
      t1.setNewTextFormat(f1);
      t1.text := nomPrg;
     
      t2 := TextField.Create(_root, 'invite', 1, 0, 2*18, sw-1, 1*18);
      t2.setNewTextFormat(f1);
      t2.text := invite;
     
      e := TEditBox.Create(_root, 'I', 2, 0, 3*18, sw-1, 1*18);
      e.setNewTextFormat(f1);
      e.type := 'input';
      e.backgroundColor := Snow;
      e.background := true;
      e.borderColor := LightSteelBlue;
      e.border := true;
     
      Selection.setFocus(e);
      Key.addListener(e);
     
      t3 := TextField.Create(_root, 'O', 3, 0, 4*18, sw-1, sh-4*18);
      t3.SetNewTextFormat(f1);
      t3.text := '';
     
      _root.opaqueBackground := WhiteSmoke;
     
      stage.scaleMode := 'noScale';
    end.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  9. #9
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Pour reprendre ton traitement récursif, il te faudrait une trame avec un timer de ce type là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    program Transpositions;
     
    uses
      Flash8;
     
    {$FRAME_WIDTH 600}
    {$FRAME_HEIGHT 400}
    {$FRAME_RATE 12}
    type
      TEditBox = class(TextField)
        procedure onKeyDown;
      end;
     
      TTransposition=class(movieclip)
       calcul:boolean;
       c,i: integer;
       s,temp: string;
       e: TEditBox;
       t: TextField;
       //....
       procedure onEnterFrame;override;
      end;
     
     
     
    constructor TTransposition.create;
    begin
     inherited create(_Root,'transposition',0);
     //constructeur e et t etc   aowner->self
     ..............
     ..............
     calcul:=false;.
     i:=0;
     //etc
     end;
     
    procedure TEditBox.onKeyDown;
    begin
      if (Key.getAscii = 13) and (length(e.text)<11) then calcul:=true; //limite la chaîne à 10 par exemple(il faut tester je n'en sais rien)
    end;
     
    procedure TTransposition.onEnterFrame;
    begin
       if calcul then
       begin
         inc(i);
         if i<=Length(e.text) Then
          begin
           //ton traitement
          end
          else
          begin
           calcul:false;
           i:=0;
          end;
        end;
    end;
     
    //etc procedure de traitement
     
    begin
     TTransposition.Create;
    end.
    Si ça peut t'aider à avancer... je n'ai pas le temps de décortiquer ton code...

  10. #10
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    Merci pour ton code ! Je vais l'étudier.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  11. #11
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    Bonsoir !

    Je n'ai pas résolu le problème des transpositions. J'y reviendrai plus tard.

    Voici le dernier état de mon projet. Cette fois c'est un programme qui convertit un nombre décimal en fraction. Je précise que ce n'est pas le même programme que celui que j'ai posté . La méthode de recherche est entièrement différente.

    J'ai séparé mon projet en deux fichiers. Le code relatif aux fractions se trouve dans une unité, Fraction.pas, et l'interface se trouve dans le fichier Console.fpr. On dirait presque un projet Delphi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    program Console;
     
    {$FRAME_WIDTH 400}
    {$FRAME_HEIGHT 240}
     
    uses
      Flash8, Fraction;
     
    type
      tEditBox = class(textField)
        procedure onKeyDown;
      end;
     
    var
      S1,
      S2: textField;  // sortie
      E1: tEditBox;   // entrée
      F1: textFormat; // format
     
    procedure tEditBox.onKeyDown;
    var
      i: integer;
    begin
      if key.getAscii = 13 then
      begin
        S2.text := Fraction.F(E1.text);
      end;
    end;
     
    begin
      F1 := TextFormat.create('Courier New', 14);
     
      S1 := textField.Create(_root, 'sortie_1', 0, 0, 0, stage.width-1, 3*20);
      S1.SetNewTextFormat(F1);
      S1.text := "FlashPascal 2 v12.07.07."#13
               + "Conversion d'un nombre décimal en fraction."#13
               + "Veuillez saisir un nombre décimal:";
     
      E1 := tEditBox.Create(_root, 'entree_1', 1, 0, 3*20, stage.width-1, 20);
      E1.setNewTextFormat(F1);
      E1.type := 'input';
      E1.border := TRUE;
      E1.borderColor := $e0e0e0;
      selection.setFocus(E1);
      key.addListener(E1);
     
      S2 := textField.Create(_root, 'output', 2, 0, 4*20, stage.width-1,
        stage.height-(4*20));
      S2.SetNewTextFormat(F1);
     
      stage.scaleMode := 'noScale';
    end.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    unit Fraction;
     
    { Conversion d'un nombre décimal en fraction. }
     
     
    interface
     
    uses
      Flash8;
     
    function F(s: string): string;
     
     
    implementation
     
    function StrToFloat(expression: string): Number external 'parseFloat';
     
    function PGCD(a, b: integer): integer;
    begin
      if b = 0 then
        Result := a
      else
        Result := PGCD(b, a mod b);
    end;
     
    function F(s: string): string;
    var
    { nombre à convertir }
      n: number;
    { numérateur, dénominateur }
      i, j: integer;
    { nombre de chiffres après la virgule }
      k: integer;
    { variable à tout faire }
      l: integer;
    begin
      n := StrToFloat(s);
     
      k := Length(s) - (Pos('.', s) + 1);
     
      j := 1;
      for l := 1 to k do
        j := 10 * j;
     
      i := Trunc(Math.Round(n * j));
     
      Result := "Résultat 1 : " + IntToStr(i) + '/' + IntToStr(j) + #13;
     
      l := PGCD(i, j);
     
      i := i div l;
      j := j div l;
     
      Result := Result + "Résultat 2 : " + IntToStr(i) + '/' + IntToStr(j);
    end;
     
     
    end.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/04/2015, 15h44
  2. Tri tableau HTML en fonction d'une colonne et ses valeurs.
    Par hugerma dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/12/2014, 08h04
  3. [sdl+glut] une console en trop
    Par khayyam90 dans le forum GLUT
    Réponses: 3
    Dernier message: 02/08/2004, 09h15
  4. Comment envoyer une commande à une console ?
    Par seb_asm dans le forum Assembleur
    Réponses: 3
    Dernier message: 27/03/2004, 14h09
  5. Taille d'une console sous linux
    Par Shinjuku dans le forum C
    Réponses: 7
    Dernier message: 13/06/2003, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo