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

Turbo Pascal Discussion :

Conversion entre les bases [FAQ]


Sujet :

Turbo Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 0
    Points
    0
    Par défaut Conversion entre les bases
    Salut !
    je veux un algorithme ou analyse d'un programme qui permet de Convertir une valeur n d'une base quelconque X vers la base decimal (10) et un autre programme qui permet de Convertir une valeur n de la base decimal (10) vers une base quelconque X
    Et merciiiiiiiiiiiiiiiiiii

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Si tu sais adapter cette Contribution tu peux trouver ce que tu cherches.
    Dans ce cas, tu dois coder ta propre fonction puissance (désignée dans le fichier indiqué par ^) mais qui n'est pas disponible en Pascal (DOS ou Windows).
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Mia,

    L'occasion de ressortir le fichier que je refile dans ces cas 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
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    Calcul dans différentes bases
    
    Conventions
    
    Dans tout ce document, on va utiliser les notations suivantes:
    
    Le symbole ^ signifie 'élever à la puissance'
    par exemple 10^3 signifie 'élever 10 à la puissance 3' c'est à dire 10*10*10 = 1000
    
    Un nombre suivi par
    #B est écrit en base 2  (B pour binaire)
    #H est écrit en base 16 (H pour Hexadécimal)
    sans précision, il est écrit en base 10
    
    Le symbole * signifie 'multiplier'
    
    Dans les calculs, pour les divisions :
      Q signifie Quotient
      R signifie Reste
    
    Rappel : Tout nombre élevé à la puissance 0 (zéro) vaut 1
    (10^0 = 2^0 = 16^0 = 1)
    
    
    
    Quand nous écrivons un nombre, par exemple 573, cela signifie qu'il est égal à la somme:
    
      3 * 10^0  = 3*1    =    3
    + 7 * 10^1  = 7*10   =   70
    + 5 * 10^2  = 5*100  =  500
                           -----
                            573
                            
     
    On peut transcrire cela dans une autre base, par exemple en base 2
    
    On ne disposera alors que de 2 symboles, 0 et 1.
    Les chiffres en partant de la DROITE signifieront :
    0 ou 1 * 2^0
             2^1
             2^2
             2^3
             etc...
             
    Soit le nombre 1000111101#B, calculons sa valeur en base 10
    
      1 * 2^0  = 1
    + 0 * 2^1  = 0
    + 1 * 2^2  = 4
    + 1 * 2^3  = 8
    + 1 * 2^4  = 16
    + 1 * 2^5  = 32
    + 0 * 2^6  = 0
    + 0 * 2^7  = 0
    + 0 * 2^8  = 0
    + 1 * 2^9  = 512
                -----
                 573
                 
    On peut utiliser une autre base, 16.
    Il nous faut alors 16 symboles pour représenter les différents 'chiffres'.
    Par convention, on a choisi d'utiliser 0 à 9, puis A à F
    
    A vaut donc 10 (décimal)
    B = 11
    C = 12
    D = 13
    E = 14
    F = 15
    
    Avec le même principe que pour la base 2, voyons le nombre 23D#H
    
      D * 16^0 =  13
    + 3 * 16^1 =  48
    + 2 * 16^2 = 512
                -----
                 573
                 
    Le passage d'une base quelconque en base 10 est donc très simple.
    
    
    
    
    Voyons maintenant comment passer de la base 10 à une autre, exemple en base 16.
    
    La technique suivante permet de trouver les chiffres successifs en partant de la DROITE.
    
    soit le nombre 573.
    Divisons le par la base destination, soit 16
    573 / 16 = 35(Q) + 13(R)
      le reste = 13 = D#H est le premier chiffre à droite de la valeur cherchée
      
    répétons le calcul avec le quotient du calcul précédent (35)
    35 / 16 = 2(Q) + 3(R)
      le reste = 3 = 3#H est le deuxième chiffre en partant de la droite
      
    et encore une fois :
    2 / 16 = 0(Q) + 2(R)
      le reste = 2 = 2#H est le troisième chiffre en partant de la droite
      
    Comme le quotient = 0, on peut arrêter.
    
    Le nombre 573 s'écrit donc 23D#H
    
    En supprimant les commentaires, on obtient une disposition claire:
               
              (Q)   (R)   (R en base 16)
    573 / 16 = 35 + 13      D
     35 / 16 =  2 +  3      3
      2 / 16 =  0 +  2      2
      
      On lit les restes de bas en haut = 23D#H
      
      
    Refaisons le calcul pour écrire 573 en base 2
    
              (Q)    (R)
    573 / 2 = 286   + 1
    286 / 2 = 143   + 0
    143 / 2 =  71   + 1
     71 / 2 =  35   + 1
     35 / 2 =  17   + 1
     17 / 2 =   8   + 1
      8 / 2 =   4   + 0
      4 / 2 =   2   + 0
      2 / 2 =   1   + 0
      1 / 2 =   0   + 1
      
      terminé puisque le quotient = 0
      
      et donc en lisant les restes de bas en haut, la valeur est 1000111101#B
      
    
    Voilà, j'espère que c'est assez clair.
    Évidemment, la balise [ code] ne convient pas vraiment pour du simple texte, mettant en couleur certaines portions, etc., mais c'est pour conserver une police à chasse fixe, et éviter la destruction de la mise en page.

    Si les cons volaient, il ferait nuit à midi.

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    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 552
    Points : 3 920
    Points
    3 920
    Par défaut
    Citation Envoyé par Haroun01 Voir le message
    Salut !
    je veux un algorithme ou analyse d'un programme qui permet de Convertir une valeur n d'une base quelconque X vers la base decimal (10) et un autre programme qui permet de Convertir une valeur n de la base decimal (10) vers une base quelconque X
    Et merciiiiiiiiiiiiiiiiiii
    C'est un problème assez simple qui ne met en jeu que des multiplications, des divisions et des modulos, pas de quoi fouetter un chat, un peu de réflexion sur papier permet déjà de bien avancer.

    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."

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut probleme sur turbo pascal
    bonjour à vous . j'ai un problème avec turbo pascal. on m'a donné un TD et je suis vraiment bloqué. les sujet est le suivant:
    Consevoir une application capable d'effectuer les conversions dans toutes les bases manipulables dans le domaine informatique (binaire, décimal octal,hexadécimal)
    - en entrée l'utilisateur choisit la base de départ correspondant à son nombre entré.ensuite le programme calcule et affiche toutes les autres bases. si c'est un nombre réel le convertir en binaire selon IEEE754 suivant cette logique.. faire cela dans turbo pascal .
    sil vous plait aidez moi.

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    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 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    @fabrice1234

    Bonjour ! Qu'est-ce qui vous bloque exactement ? Pouvez-vous montrer ce que vous avez déjà fait ?

    Le message de droggo (plus haut dans cette discussion) contient tout ce que vous avez besoin de savoir sur le sujet.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  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 552
    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 552
    Points : 3 920
    Points
    3 920
    Par défaut
    Salut

    Un rapide coup d'oeil dans la FAQ Comment convertir un entier en base de numeration quelconque devrait déjà te dépanner pour les nombres entiers. Pour les nombres réels je n'ai rien à te proposer et j'avoue mal comprendre ce qu'il faut faire.

    Je te conseille quand même de faire le code toi-même et de ne pas recopier bêtement le code de la FAQ (qui n'est pas du Turbo Pascal ), le but des TD étant la mise en pratique des connaissances théoriques. En outre, le changement de base de numération d'un entier est d'une simplicité enfantine.

    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."

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut roland chastin
    Tu as raison. Je voulais connaître la logique de ce TD. Je n'ai pas encore travaillé avec Free Pascal, je ne suis encore qu'un novice. Je ne vois pas comment commencer ce TD avant de simuler sur Free Pascal.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/07/2015, 23h15
  2. [Turbo Pascal] Conversion entre les bases
    Par louai dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 14/04/2011, 17h10
  3. Réponses: 2
    Dernier message: 30/06/2010, 22h35
  4. Interaction entre les bases de données ACCESS
    Par mimi_01 dans le forum Access
    Réponses: 2
    Dernier message: 18/02/2009, 12h57

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