Forum de Programmation en langage PANORAMIC
Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Mots-clés

fichiers  

Derniers sujets
» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
Mer 21 Nov - 1:08 par Papydall-Admin

» Balises {USER...}
Lun 19 Nov - 22:12 par Papydall-Admin

» Useful Dog
Ven 6 Avr - 14:25 par Papydall-Admin

» Les Courbes de Bézier cubiques
Ven 30 Mar - 4:08 par Papydall-Admin

» Animation flash
Mer 14 Mar - 2:50 par Papydall-Admin

» Mega-Strip
Lun 12 Mar - 1:24 par Papydall-Admin

» Les oiseaux de mon jardin
Ven 9 Mar - 1:08 par Papydall-Admin

»  Création et gestion d’un livre
Jeu 8 Mar - 15:37 par Papydall-Admin

» Deux questions d’éthique
Mar 6 Mar - 1:56 par Papydall-Admin

Décembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Calendrier Calendrier


Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...

Aller en bas

Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...

Message par Papydall-Admin le Mer 21 Nov - 0:47

Tout est dans le code, rien à y ajouter !

Code:

rem ============================================================================
rem       Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ... 
rem                 Papydall le 20 / 11 / 2018 
rem             PANORAMIC-EDITOR Version 0.9.29i5
rem ============================================================================
rem    Convertir un nombre en base 10 vers un nombre en base 2 à 36
rem Saisissez un nombre entier en base 10 dans la zone de l’EDIT et le programme
rem affichera instantanément le nombre converti dans les différentes bases proposées
rem Pour une base autre que celles proposées, choisissez celle qui vous convient
rem dans la LIST en bas à gauche (de la base 2 à la base 36).
rem ============================================================================

GO()

end
rem ============================================================================
SUB GO()
    label clic, quitter
    dim b, n, i

    width 0,1000 : height 0,500 : color 0,20,200,150
    caption 0,"Convertisseur entre bases"

    edit 010  : top 010,020 : left 010,200 : set_focus 10 : on_change 10,clic
    hint 10,"Saisir un nombre entier en décimal"
    alpha 020 : top 020,020 : left 020,020 : caption 20,"Nombre à convertir" 
    
    memo 030  : top 030,070 : left 030,200 : hint 30,"Valeur en base 2"
    alpha 040 : top 040,080 : left 040,120 : caption 40,"Binaire"
   
    memo 050  : top 050,120 : left 050,200 : hint 50,"Valeur en base 4"
    alpha 060 : top 060,130 : left 060,080 : caption 60,"Quaternaire"

    memo 070  : top 070,170 : left 070,200 : hint 70,"Valeur en base 8"
    alpha 080 : top 080,180 : left 080,135 : caption 80,"Octal"

    memo 090  : top 090,220 : left 090,200 : hint 90,"Valeur en base 10"
    alpha 100 : top 100,230 : left 100,110 : caption 100,"Décimal"

    memo 110  : top 110,270 : left 110,200 : hint 110,"Valeur en base 16"
    alpha 120 : top 120,280 : left 120,070 : caption 120,"Hexadécimal"

    memo 130  : top 130,360 : left 130,200 
    alpha 140 : top 140,370 : left 140,010 : caption 140,"Autre Base :"

    list 150  : top 150,320 : left 150,140 : height 150,120 : width 150,50 
    font_bold 150 : font_size 150,12  : on_click 150,clic
    hint 150,"Choisir la base de la conversion"
        
    for i = 2 to 36 : item_add 150,i : next i
    item_select 150,2

    for i = 10 to 140 step 10
        font_bold i : font_name  i,"tahoma"  : font_color i,0,0,255
        width i,700 : height i,45 : font_size i,11
    next i
  
    on_close 0, quitter
    close_inactive
    
END_SUB
rem ============================================================================
Quitter:
    if message_information_yes_no("Vous voulez vraiment quitter ?") = 1
      Close_Main_Form() : close_active
   end_if
   Convertir()
return
rem ============================================================================
Clic:
   off_change 10
   b = item_index(150)+1 

   if numeric(text$(10)) = 0 
      message "Un nombre en base décimale, SVP !!!"
      for i = 10 to 130 step 20 : text i,"" : next i
      caret_position 10,len(text$(10))
      on_change 10,clic
      return
   end_if
   n = val(text$(10))
   if n <> int(n)
      text 10,str$(int(n)) : caret_position 10,len(text$(10))
      on_change 10,clic 
      return
   end_if
   caption 140,"Autre Base : " + str$(b)
   item_select 150,b-1
   off_change 10
   Convertir()
   set_focus 10 : caret_position 10,len(text$(10))   
   on_change 10,clic
return
rem ============================================================================
SUB Convertir()    
    item_add 30,Decimal2BaseB$(n,2)
    item_add 50,Decimal2BaseB$(n,4)
    item_add 70,Decimal2BaseB$(n,8)
    item_add 90,Decimal2BaseB$(n,10)
    item_add 110,Decimal2BaseB$(n,16)
    item_add 130,Decimal2BaseB$(n,b) 
    hint 130,"Valeur en base " + str$(b)
END_SUB
rem ============================================================================
SUB Close_Main_Form()
    dim_local k,w,h
    For k = 100 To 60 Step -1
        w = width(0) : h = height(0)
        width 0,w*k/92 : height 0,h*k/92
        top 0,(screen_y - height(0))/2 : left 0,(screen_x - width(0))/2
        pause 100
    next k
    terminate
END_SUB
rem ============================================================================
' ************************************************************
' * Conversion d'un nombre décimal vers un nombre en base B  *
' ************************************************************
FNC Decimal2BaseB$(Decimal,base)
    DIM_local chiffres$ : chiffres$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    DIM_LOCAL tmp$
   
    if Decimal = 0 then result "0" : Exit_FNC
    WHILE Decimal > 0
       IF FRAC(Decimal / base) = 0
          tmp$ = "0" + tmp$
       ELSE
          tmp$ = MID$(chiffres$,(Decimal - (INT(Decimal / base) * base)) + 1,1) + tmp$
       END_IF
       Decimal = INT(Decimal / base)
    END_WHILE
    RESULT tmp$    
END_FNC
rem ============================================================================

_________________
Invité, merci d'être passé par ici.
avatar
Papydall-Admin
Admin

Messages : 97
Réputation : 0
Date d'inscription : 08/09/2015
Age : 68
Localisation : MOKNINE (Tunisie)

Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com

Revenir en haut Aller en bas

Re: Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...

Message par Papydall-Admin le Mer 21 Nov - 1:08

Code:

rem ============================================================================
rem              Conversion entre bases de 2 à 36
rem                 Papydall le 20 / 11 / 2018 
rem             PANORAMIC-EDITOR Version 0.9.29i5
rem ============================================================================
rem Convertir un nombre en base B1 vers un nombre en base B2
rem B1 et/ou B2 de 2 à 36
rem Par défaut le programme propose de convertir de la base 10 vers la base 2
rem Pour toute autre base, sélectionnez celle qui vous convient dans la LISTE
rem à gauche et/ou celle à droite
rem ============================================================================
rem Essayez de convertir 
rem 47524133 (décimal) vers la base 36
rem 25435343763 (décimal) vers la base 36
rem 9591492602340 (décimal) vers la base 28
rem ============================================================================

Go()

end
rem ============================================================================
SUB Go()
    label clic, quitter
    dim i,b1,b2,n$,erreur
    width 0,1000 : color 0,100,50,255
    caption 0,"Conversion entre bases"
    alpha 10 : top 10,65 : left 10,25 : font_bold 10 : font_name 10,"arim"
    caption 10,"De la base :" : font_size 10,14 : font_color 10,255,255,0
    alpha 20 : top 20,65 : left 20,525 : font_bold 20 : font_name 20,"arimo"
    caption 20,"vers la base :" : font_size 20,14 : font_color 20,255,255,0
    
    edit 30 : top 30,20 : left 30,025 : width 30,450 : font_bold 30 : font_size 30,14
    font_name 30,"arimo" : set_focus 30 : on_change 30,clic
    hint 30,"Saisissez un nombre à convertir" + chr$(13) + "de la base à gauche à celle de droite"
    
    memo 40 : top 40,10 : left 40,525 : width 40,450 : font_bold 40 : font_size 40,14
    height 40, 50 : font_name 30,"arimo" : font_size 40,14 : font_name 40,"arimo" 
    
    list 50 : top 50,100 : left 50,25 : width 50,450 : height 50,240 : font_bold 50
    font_size 50,14 : hint 50,"Selectionnez la base de départ" : on_click 50,clic
    
    list 60 : top 60,100 : left 60,525 : width 60,450 : height 60,240 : font_bold 60
    font_size 60,14 : hint 60,"Selectionnez la base d'arrivée" : on_click 50,clic
    
    for i = 2 to 36 
        item_add 50,"Base : " + str$(i) : item_add 60,"Base : " + str$(i) 
    next i
    item_select 50,9 : item_select 60,1
    
    alpha 70 : top 70,350 : left 70,25 : font_bold 70 : font_name 70,"arim"
    caption 70,"Résultat :" : font_size 70,14 : font_color 70,255,255,0
    
    memo 80 : top 80,390 : left 80,25 : width 80,950 : font_bold 80 : font_size 80,14
    height 80,50 : font_name 80,"arimo" : font_size 80,14 : font_name 80,"arimo" 
        
    on_close 0, quitter
    close_inactive
    
END_SUB
rem ============================================================================
Clic:
   off_click 50 : off_click 60 : off_change 30
   b1 = item_index(50) + 1 : b2 = item_index(60) + 1 : text 30,upper$(text$(30)) 
   n$ = text$(30)      
   Convertir()
   set_focus 30 : caret_position 30,len(text$(30)) 
   on_click 50,clic : on_click 60,clic : on_change 30,clic     
return
rem ============================================================================
SUB Convertir()
    dim_local deci
    erreur = 0
    deci = BaseB2Decimal(n$,b1)
    if erreur = 0
       item_add 40,Decimal2BaseB$(Deci,b2)
       item_add 80,n$ + " (base-" + str$(b1) + " ) = " + Decimal2BaseB$(Deci,b2)  + " (base- "+str$(b2)+")"
    else
       item_add 40, "Valeur invalide !!!"
       item_add 80,"Entrée invalide !!!"       
    end_if    
END_SUB
rem ============================================================================
Quitter:
    if message_information_yes_no("Vous voulez vraiment quitter ?") = 1
      Close_Main_Form() : close_active
    end_if
return
rem ============================================================================
SUB Close_Main_Form()
    dim_local k,w,h
    For k = 100 To 60 Step -1
        w = width(0) : h = height(0)
        width 0,w*k/92 : height 0,h*k/92
        top 0,(screen_y - height(0))/2 : left 0,(screen_x - width(0))/2
        pause 100
    next k
    terminate
END_SUB
rem ============================================================================
' Conversion d'un nombre décimal vers un nombre en base Base  
FNC Decimal2BaseB$(Decimal,Base)
    DIM_local chiffres$ : chiffres$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    DIM_LOCAL tmp$   
    if Decimal = 0 then result "0" : Exit_FNC
    WHILE Decimal > 0
       IF FRAC(Decimal / base) = 0
          tmp$ = "0" + tmp$
       ELSE
          tmp$ = MID$(chiffres$,(Decimal - (INT(Decimal / base) * base)) + 1,1) + tmp$
       END_IF
       Decimal = INT(Decimal / base)
    END_WHILE
    RESULT tmp$    
END_FNC
rem ============================================================================
' Conversion d'un nombre en base B >= 2 vers un nombre décimal 
' Paramètres :
' BaseB$ est une chaine de caractères représentant la valeur du nombre dans 
' la base Base
FNC BaseB2Decimal(BaseB$,Base)
    DIM_local chiffres$ : chiffres$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    DIM_LOCAL Decimal
    chiffres$ = left$(chiffres$,base)    
    WHILE BaseB$ <> ""
        if INSTR(chiffres$,LEFT$(BaseB$,1)) = 0
           erreur = 1 :  exit_fnc
        end_if    
        Decimal = (Decimal * base) + INSTR(chiffres$,LEFT$(BaseB$,1))-1
        BaseB$ = RIGHT$(BaseB$,LEN(BaseB$)-1)
    END_WHILE
    RESULT Decimal
END_FNC
rem ============================================================================

_________________
Invité, merci d'être passé par ici.
avatar
Papydall-Admin
Admin

Messages : 97
Réputation : 0
Date d'inscription : 08/09/2015
Age : 68
Localisation : MOKNINE (Tunisie)

Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum