FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
lettres - Afficher  un nombre en toutes lettres Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
lettres - Afficher  un nombre en toutes lettres Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
lettres - Afficher  un nombre en toutes lettres Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
lettres - Afficher  un nombre en toutes lettres Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
lettres - Afficher  un nombre en toutes lettres Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
lettres - Afficher  un nombre en toutes lettres Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
lettres - Afficher  un nombre en toutes lettres Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
lettres - Afficher  un nombre en toutes lettres Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
lettres - Afficher  un nombre en toutes lettres Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
lettres - Afficher  un nombre en toutes lettres Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
lettres - Afficher  un nombre en toutes lettres Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
lettres - Afficher  un nombre en toutes lettres Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
lettres - Afficher  un nombre en toutes lettres Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
lettres - Afficher  un nombre en toutes lettres Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
lettres - Afficher  un nombre en toutes lettres Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

 

 Afficher un nombre en toutes lettres

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

lettres - Afficher  un nombre en toutes lettres Empty
MessageSujet: Afficher un nombre en toutes lettres   lettres - Afficher  un nombre en toutes lettres EmptyLun 28 Jan 2013 - 4:51

Salut tout le monde.

Le code suivant contient une procédure qui affiche un nombre entier en toutes lettres.
Le nombre peut être négatif, positif ou nul et pouvant comporter jusqu’à 15 chiffres soit
neuf cent quatre-vingt dix-neuf billions neuf cent quatre-vingt dix-neuf milliards neuf cent quatre-vingt dix-neuf millions neuf cent quatre-vingt dix-neuf mille neuf cent quatre-vingt dix-neuf !

L’appel de la SUB se fait en lui transmettant 2 paramètres :
Le 1er c’est un nombre ou une variable contenant le nombre à transformer ;
Le second est un caractère entre guillemets : "F" , "B" , ou "S"

Si c’est "F" , le nombre sera écrit en Français de FRANCE (soixante-dix, quatre-vingts, quatre-vingt-dix)
Si c’est "B", le nombre sera écrit en Français de BELGIQUE (septante, octante, nonante)
Si c’est "S", le nombre sera écrit en Français de SUISSE (septante, huitante, nonante).

Code:
' ******************************************************************************
'
'            Ecriture d'un nombre entier en toutes lettres
'                    Nombre_En_Lettres.bas
'                          Par PAPYDALL
'
' ******************************************************************************

' Le nombre à convertir peut être positif ou négatif.
' Il est limité à 15 chiffres ce qui est très suffisant.
' La procédure Nombre_EN_Lettres(n,pays$) doit être appelée avec 2 parametres :
' Le 1er représente l'entier à convertir
' Le second est une chaîne de 1 seul caractère "F", "B" ou "S"
' "F" : le texte sera affiché en Français de FRANCE (soixante-dix, quatre-vingts,quatre-vingt-dix)
' "B" : le texte sera affiché en Français de BELGIQUE (septante, octante, nonante)
' "S" : le texte sera affiché en Français de SUISSE (septante, huitante, nonante)

' ******************************************************************************
label fin
dim result$,n,err%
top 0, 100 : left 0,100 : width 0,1200 : height 0,150 : color 0,0,0,0
alpha 1 : top 1,10 : left 1,10 : font_bold 1 : font_color 1,255,255,0
caption 0,"Ecriture d'un nombre en toutes lettres"
button 2 : top 2,80 : left 2,500 : caption 2,"OK" : hide 2 : on_click 2,fin
' n = 123456789012345
 n = 999999999999999
' n = -1234
 Nombre_En_Lettres(n,"F")
 if err% = 1 then terminate
  show 2
end
' ----------------------------------
fin:
terminate
' ******************************************************************************
' Formater un nombre en intercalant des espaces entres les différentes tranches
' de 3 chiffres
SUB Format_Nombre(n)
    dim_local l%,temp$,n$
    n$ = str$(n) : l% = len(n$)
    if l% < 4 then result$ = n$ : exit_sub
    result$ = " "
    while l% > 3
        temp$ = right$(n$,3) : result$ = " " + temp$ + result$
        n$ = left$(n$,l%-3) : l% = len(n$)
    end_while
    result$ = n$ + result$
END_SUB
' ******************************************************************************
' La valeur absolue du nombre doit être <= 999 999 999 999 999
SUB Nombre_En_Lettres(n,pays$)
    dim_local unite$(19),dizaineF$(9),dizaineB$(9),dizaineS$(9),coefs$(7)
    dim_local temp$,c%,d%,u%,i%,neg%,coef%,format$
' ---------------- initialisations des unités ----------------------------------
    unite$(1) = "un" : unite$(2) = "deux" : unite$(3) = "trois"
    unite$(4) = "quatre" : unite$(5) = "cinq" : unite$(6) = "six"
    unite$(7) = "sept" : unite$(8) = "huit" : unite$(9) = "neuf"
    unite$(10) = "dix" : unite$(11) = "onze" : unite$(12) = "douze"
    unite$(13) = "treize" : unite$(14) = "quatorze" : unite$(15) = "quinze"
    unite$(16) = "seize" : unite$(17) = "dix-sept" : unite$(18) = "dix-huit"
    unite$(19) = "dix-neuf"
' ----------- initialisation des dizaines pour la FRANCE -----------------------
    dizaineF$(1) = "" : dizaineF$(2) = "vingt" : dizaineF$(3) = "trente"
    dizaineF$(4) = "quarante" : dizaineF$(5) = "cinquante"
    dizaineF$(6) = "soixante" : dizaineF$(7) = ""
    dizaineF$(8) = "quatre-vingt" : dizaineF$(9) = ""
' ----------- initialisation des dizaines pour la BELGIQUE ---------------------
    dizaineB$(1) = "" : dizaineB$(2) = "vingt" : dizaineB$(3) = "trente"
    dizaineB$(4) = "quarante" : dizaineB$(5) = "cinquante"
    dizaineB$(6) = "soixante" : dizaineB$(7) = "septante" : dizaineB$(8) = "octante"
    dizaineB$(9) = "nonante"
' ----------- initialisation des dizaines pour la SUISSE -----------------------
    dizaineS$(1) = "" : dizaineS$(2) = "vingt" : dizaineS$(3) = "trente"
    dizaineS$(4) = "quarante" : dizaineS$(5) = "cinquante"
    dizaineS$(6) = "soixante" : dizaineS$(7) = "septante" : dizaineS$(8) = "huitante"
    dizaineS$(9) = "nonante"
' --------------------- initialisation des coefficients ------------------------
    coefs$(0) = "cent" : coefs$(1) = "mille" : coefs$(2) = "million"
    coefs$(3) = "milliard" : coefs$(4) = "billion"
' ------------------------------------------------------------------------------
  result$ = ""
  Format_Nombre(n) : format$ = result$ : result$ = ""
' Cas particulier de zéro
  If n = 0 then result$ = " zéro" : caption 1,"0 = zéro" :  exit_sub
  if abs(n) > 999999999999999
    message "Nombre trop grand !"+chr$(13)+"Le nombre doit être <= 999999999999"+chr$(13)+"en valeur absolue"
    err% = 1
    exit_sub
  end_if

' Mémorisation du signe
  if n < 0 then neg% = 1 : n = abs(n) : else : neg% = 0
'  if upper$(pays$) = "F" then caption 0,"Ecriture en Français de FRANCE"
'  if upper$(pays$) = "B" then caption 0,"Ecriture en Français de BELGIQUE"
' if upper$(pays$) = "S" then caption 0,"Ecriture en Français de SUISSE"
  coef% = 0
  Repeat
' Récupération de l'unité du bloc de trois chiffres en cours
    u% =  mod(n,10) :  n = int(n/10)
' Récupération de la dizaine du bloc de trois chiffres en cours
    d% =  mod(n,10) :  n = int(n/10)
' Traitement des dizaines
    temp$ = ""
' Passage sur la dizaine inférieure pour 10 à 19
' et pour 70-79 90-99 dans le cas de la France

    if (d% = 1) or ((d% = 7)  or (d% = 9)) and (upper$(pays$) = "F")
      d% = d% - 1 : u% = u% + 10
    end_if
    if d% > 1
      If upper$(pays$) = "F"
        temp$ = " " + DizaineF$(d%)
' Ajout du cas particulier de 'et' entre la dizaine et 1
        if (d% < 8) and ((u% = 1) or (u% = 11)) then temp$ = temp$ + " et"
      Else
        if upper$(pays$) = "B" then temp$ = " " + DizaineB$(d%): else : temp$ = " " + DizaineS$(d%)
' // Ajout du cas particulier de 'et' entre la dizaine et 1
        if (u% = 1) then temp$ = temp$ + " et"
      End_if
    end_if
' ajout du texte de l'unité
    if u% > 0 then temp$ = temp$ + " " + unite$(u%)
' ajout du 's' à Quatre-vingt si rien ne suit
    If (result$ = "") and (d% = 8) and (u% = 0) and (upper$(pays$) = "F")  then result$ = "s"
    result$ = temp$ + result$

' Récupération de la centaine du bloc de trois chiffres en cours
    c% =  mod(n,10) :  n = int(n /10) : ' Récupère centaine
    If c% > 0
      temp$ = ""
      if c% > 1 then temp$ = " " + unite$(c%) + temp$
      temp$ = temp$ + " " + coefs$(0)
' Traitement du cas particulier du 's' à cent si rien ne suit
      If (result$ = "") and (c% > 1) then result$ = "s"
      result$ = temp$ + result$
    end_if

' Traitement du prochain groupe de 3 chiffres
    if n > 0
      coef% = coef% + 1
      i% = mod(n, 1000)
      If (i% > 1) and (coef% > 1) then result$ = "s" + result$
      If i% > 0 then result$ = " " + coefs$(coef%) + result$
' Traitement du cas particulier 'mille' ( non pas 'un mille' )
      If (i% = 1) and (coef% = 1) then n = n - 1
    end_if
  until n = 0
  result$ = Trim$(result$)

' Ajout du signe en cas de besoin
  if neg% = 1  then result$ = "moins " + result$
  caption 1, format$ + " =" + chr$(13)+chr$(13) + result$
End_sub
' ******************************************************************************


Dernière édition par papydall le Lun 28 Jan 2013 - 16:32, édité 1 fois (Raison : Ajout de SUB Format_Nombre(n))
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

lettres - Afficher  un nombre en toutes lettres Empty
MessageSujet: Re: Afficher un nombre en toutes lettres   lettres - Afficher  un nombre en toutes lettres EmptyLun 28 Jan 2013 - 16:33

Salut tout le monde.

J’ai édité mon programme, ci-haut pour lui ajouter une procédure SUB Format_Nombre(n).
Cette procédure permet d’aérer l’affichage d’un nombre en intercalant des espaces entre les différentes tranches de 3 chiffres de ce nombre.
Le résultat est une meilleure lisibilité d’un nombre comportant plusieurs chiffres.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

lettres - Afficher  un nombre en toutes lettres Empty
MessageSujet: Re: Afficher un nombre en toutes lettres   lettres - Afficher  un nombre en toutes lettres EmptyLun 28 Jan 2013 - 17:15

Ajouté dans ma librairie Wink
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

lettres - Afficher  un nombre en toutes lettres Empty
MessageSujet: Re: Afficher un nombre en toutes lettres   lettres - Afficher  un nombre en toutes lettres EmptyLun 28 Jan 2013 - 19:33

Merci Papydall Smile
Ça sera certainement très utile. Mais tu avais déjà fait un programme comme cela je crois. Mais c'est vrai que ce sera plus pratique avec des procédures!
A+ Wink Wink Wink
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

lettres - Afficher  un nombre en toutes lettres Empty
MessageSujet: Re: Afficher un nombre en toutes lettres   lettres - Afficher  un nombre en toutes lettres EmptyLun 28 Jan 2013 - 23:15

bignono a écrit:
Merci Papydall Smile
Ça sera certainement très utile. Mais tu avais déjà fait un programme comme cela je crois. Mais c'est vrai que ce sera plus pratique avec des procédures!
A+ Wink Wink Wink

C’était à mes débuts, environ un mois après ma découverte de PANORAMIC.
Le présent code peut se résumer en une simple procédure qu’on pourra intégrer dans un programme plus conséquent.

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





lettres - Afficher  un nombre en toutes lettres Empty
MessageSujet: Re: Afficher un nombre en toutes lettres   lettres - Afficher  un nombre en toutes lettres Empty

Revenir en haut Aller en bas
 
Afficher un nombre en toutes lettres
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Montant en toutes lettres
» Comment déterminer le nombre de chiffres d'un nombre naturel
» Traduire des nombres en lettres.
» question de math et de lettres.
» Traduction des nombres en lettres.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: