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

Lazarus Pascal Discussion :

Convertisseur Binaire / Hexadécimal / Décimal [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Convertisseur Binaire / Hexadécimal / Décimal
    Bonjour/Bonsoir

    J'aimerais savoir si une personne pouvait m'aider dans mon projet de faire un convertisseur Binaire/Hexadécimal/Décimal .

    Je suis un jeune programmeur (si on peut appeler ça un programmeur ) qui a commencé il y a une semaine.

    merci d’avance pour votre aide.

  2. #2
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 557
    Points : 3 938
    Points
    3 938
    Par défaut
    Salut


    Commence par réfléchir sur la façon de transformer un nombre de la base 10 vers la base 16 par exemple, d'un point de vue mathématique, hors de toute considération de programmation, ce n'est pas très compliqué. On fait cela avec des opérations arithmétiques de base. Piste: la division entière (quotient et reste) suffit pour résoudre ton problème.

    Réfléchis un peu et poursuis cette discussion.

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé comme faire : si j'ai bien compris on prend par exemple le chiffre 845, on le divise par 16, on trouve 52 et 13 de reste ; puis on divise 52 par 16 et on trouve 3 et 4 de reste, ce qui nous donne 34D en hexadécimal.
    Je pense que sais ça
    Merci pour le début de piste ; je suis impatient d'en apprendre plus.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Une fois l'algorithme connu (la méthode), il reste à l'implémenter (le coder).

    Ceci demande de réfléchir à la structure des données qu'il devra traiter et aux interactions avec l'utilisateur (affichages, boutons, etc.).

    Ici, il faudra peut-être utiliser des chaînes de caractères, des entiers, et les fonctions qui convertissent les chaînes en entiers et vice-versa.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    D'accord, je vais réfléchir a la structure. Je vous donnerai des nouvelles de mon codage.

    Merci.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 420
    Points : 1 102
    Points
    1 102
    Par défaut
    Bonjour,

    J'ai trouvé comme faire : si j'ai bien compris on prend par exemple le chiffre 845, on le divise par 16, on trouve 52 et 13 de reste ; puis on divise 52 par 16 et on trouve 3 et 4 de reste, ce qui nous donne 34C en hexadécimal.
    Moi je dirais 34D (C c'est 12 en hexadécimal)

    Cordialement

  7. #7
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 557
    Points : 3 938
    Points
    3 938
    Par défaut
    Salut,

    On dirait que tu as compris le principe. Cela doit répété un certain nombre de fois, en fait tant qu'il y a des chiffres à récupérer.
    Pour t'orienter, écris une fonction qui prend en paramètre un entier pour la valeur à convertir, un entier (entre 2 et 16) pour définir la base de numération voulue. Le résultat de la fonction étant une chaîne de caractère.

    Ensuite intéresse-toi à l'utilisation de cette fonction dans une programme destiné à être utilisé (en fonction de l'énoncé du problème donné par ton prof).

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Salut oui je me suis trompé acaumes merci pour t'as correction.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjours, sais juste pour vous dire que mon projet a bien avancer j'ai réussi a faire du Binaire en Hexadécimal et en Décimal, et du Décimal en Hexadécimal et en Binaire me manque plus qu'as faire de l’Hexadécimal en Binaire et en Décimal.
    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
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    function BinToInt(Value: string): Integer;
    var
      i, iValueSize: Integer;
    begin                       
      Result := 0;
      iValueSize := Length(Value);
      for i := iValueSize downto 1 do
        if Value[i] = '1' then Result := Result + (1 shl (iValueSize - i));
    end;
     
    function IntToBin(Value: Longint; Digits: Integer): string;
    var
      i: Integer;
    begin
      Result := '';
      for i := Digits downto 0 do
        if Value and (1 shl i) <> 0 then
          Result := Result + '1'
      else
        Result := Result + '0';
    end;
     
    { TForm1 }
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:Integer;
    begin
      a:= BinToInt(Edit1.Text);
      edit2.Text:=inttohex(a,4);
      edit3.text:=inttostr(a);  
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
      a:Integer;
    begin
      Edit1.Text:=inttobin(strtoint(Edit3.text),16);
      Edit2.Text:=inttohex(strtoint(Edit3.text),4);
    end;
     
     
    end.
    dite moi se que vous en pensez

  10. #10
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 557
    Points : 3 938
    Points
    3 938
    Par défaut
    Je note une petite incohérence : la fonction attend un nombre de chiffres Digits (p.ex. 4) mais elle t'en retournera Digits+1 (resp. 5), en effet la boucle for i := Digits downto 0 do va être parcourue Digits +1 fois. Il vaudrait mieux for i := (Digits-1) downto 0 do.

    En outre, fallait-il te limiter à la base 2, la généralisation à une base quelconque n'est pas beaucoup plus compliquée, il faut rester sur une valeur raisonnable, disons entre 2 (pas moins, la base 1 consiste à compter ses doigts) et 36 (chiffres + lettres de A à Z pour former les symboles de numération).

    Ca t'intéresse de poursuivre dans ce sens ?

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertisseur Binaire > Décimale
    Par Kalika07 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/01/2013, 16h17
  2. Convertisseur binaire --> décimal
    Par VassR dans le forum Mathématiques
    Réponses: 2
    Dernier message: 22/10/2008, 08h44
  3. Source C:Binaire en Décimal
    Par jorg1n dans le forum C
    Réponses: 4
    Dernier message: 19/11/2007, 15h43
  4. Probleme Convertisseur binaire en C
    Par skulled dans le forum C
    Réponses: 4
    Dernier message: 11/12/2006, 23h28
  5. Conversion hexadécimal -> décimal
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2005, 09h13

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