Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » BASIC » nombres décimaux en qb4.5

SFLPMEA
ProgBoarder
RemonterCiter Windows 98 Firefox 2 - Posté le 12/02/2008 à 23:13
(héhé Salutations.

Je t'avais dit que je détaillais au MAXIMUM. Pour 'simplifier', tu peux remplacer le GOSUB "ANALYSE" par ceci, en plus condensé et pratiquement instantané :

ANALYSE:
X = RTRIM$(X) + "00"
SELECT CASE VAL(X)
CASE IS < 0:
X# = VAL(X): X# = ABS(X#): X# = X# * 100
X# = X# + .5: X# = INT(X#) / 100
X# = -X#: A = STR$(X#): B = RTRIM$(A): Virg% = INSTR(B, ".")
IF Virg% = 0 THEN B = B + ".00"
IF Virg% = (LEN(B) - 1) THEN B = B + "0"
CASE 0:
B = LEFT$(X, LEN(X) - 2)
CASE IS > 0:
X# = VAL(X): X# = INT(X# * 100 + .5): X# = X# / 100
A = STR$(X#): B = LTRIM$(RTRIM$(A)): Virg% = INSTR(B, ".")
IF Virg% = 0 THEN B = B + ".00"
IF Virg% = (LEN(B) - 1) THEN B = B + "0"
END SELECT
RETURN

En ce qui concerne les valeurs numériques entières, j'ai ajouté Deux zéros (ou un seul pour avoir TOUJOURS 2 décimales après la virgule), aussi bien pour les positives que pour les négatives, en utilisant INSTR. Si tu effectues des essais, avec un nombre différent de valeurs, n'omets pas de modifier le 17 que j'ai prévu dans mon exemple.
Je n'utilise jamais FUNCTION, que des GOSUB et cela fonctionne aussi bien (il faudrait peut-être que je m'y mette, mais pourquoi ?).
Exécute quelques essais en modifiant les valeurs des datas. J'en ai fait quelques uns et les résultats obtenus m'ont toujours semblé répondre à tes besoins.
Je pense que tu sais récupérer un programme. Je vais faire un petit rappel : sélectionner la partie qui t'intéresse et la copier, ouvrir le bloc-notes (tu ne peux pas t'en passer), y coller la sélection et sauvegarder dans le répertoire de ton choix avec le nom que tu souhaites (8 caractères au maximum) et l'extension .BAS. Ne t'amuse surtout pas à éditer le message et à recomposer le programme.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 13/02/2008 à 14:22
Bonjour,
Merci sflpmea pour ta réponse, mais ce sub ne s'applique qu'à la variable X
j'ai 12 variables a modifier avant de les envoyer dans un fichier.
c'est pour ça que la Function de Francesco est bien car je met :
print #2, Convert$(a$), Convert$(b$), etc ..
et ça va direct dans mon fichier déjà transformé.
Si quelqu'un a un complément à la function, ça serrait super !
DMF
(confus)
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 13/02/2008 à 15:59
Re-bonjour,
j'ai voulu essayer ton sub sflpmea,
mais il y a "type incompatible" au niveau de :
ANALYSE:
X = RTRIM$(X) + "00" ' ici

DMF
(désapprouve)
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
SFLPMEA
ProgBoarder
RemonterCiter Windows 98 Firefox 2 - Posté le 13/02/2008 à 16:43
(héhé Salutations.

Si tu as bien DEFSTR A-Z en débute de programme, X est considéré comme étant X$ et tu peux très bien faire X = RTRIM$(X) + "00", sans aucune incompatibilité ….
Il m'est possible de remettre la dernière mouture du programme si tu le désires.
Chez moi, aucun problème de ce genre.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 15/02/2008 à 18:34
Bonjour,
j'ai fait un rajout de code sur la FUNCTION car je n'arrive pas avec ton code SFLPMEA, désolé, avec ces modifs tout fonctionne sauf que je n'arrive pas à avoir 2 chiffres après la virgue, cette FUNCTION m'en retour 3 maxi, ce qui est déjà bien
détail de la FUNCTION modifiées par MES SOINS :


FUNCTION Convert$ (Nombre$)
valeur! = VAL(Nombre$)
chaine$ = ""

IF INSTR(Nombre$, ".") = 0 THEN m$ = ".00" ' modif ici
IF RIGHT$(Nombre$, 2) = ".1" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".2" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".3" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".4" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".5" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".6" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".7" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".8" THEN m$ = "0" ' modif ici
IF RIGHT$(Nombre$, 2) = ".9" THEN m$ = "0" ' modif ici

IF valeur! < 0 THEN
chaine$ = "-"
valeur! = -valeur!
END IF
IF valeur! < 1 AND valeur <> 0 THEN ' modif ici
chaine$ = chaine$ + "0"
END IF
chaine$ = chaine$ + LTRIM$(RTRIM$(STR$(valeur))) + m$ ' modif ici
Convert$ = chaine$
END FUNCTION



si quelqu'un a un complément à apporter, ce serait génial !
merci quand même pour ta patience SFLPMEA
DMF
(sourire)

Edité par diemaker form ( 19/02/2008 16:17:11 )
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
SFLPMEA
ProgBoarder
RemonterCiter Windows 98 Firefox 2 - Posté le 17/02/2008 à 20:48
(héhé Salutations.

J'ai quelque chose à te proposer pour résoudre ton problème. Le programme est relativement long et je le mets sur le Wall :


Wall (140) : Afficher le code source - Ouvrir dans une nouvelle fenêtre

Je me suis planté dans le nom du programme (exclamation) Et je ne peux pas modifier le Wall (exclamation)
Je me suis bien amusé pour le concevoir et tu pourras également obtenir mon petit module de saisie des données (je l'utilise depuis plus de 15 ans). Jamais de INPUT (exclamation)
Tu le testes sérieusement. Tu remarqueras qu'il est écrit à "l'ancienne" sans FUNCTION.
Je l'ai testé un certain temps et je suis tombé souventes fois sur des cas aussi étranges que bizarres.
Tu peux, élément par élément, mélanger de l'alphanumérique, du numérique positif ou négatif avec plus de 2 décimales, ou sans.
J'ai adopté une autre méthode pour l'arrondi. J'avais abordé ce sujet en :
http://www.progboards.com/sujet-354.php
En gros, écriture sur l'écran avec masque et récupération dans une chaîne alpha de ce qui s'y trouve (SCREEN), puis traitement de la chaîne obtenue pour obtenir ce qui est recherché (signe - éventuel, 2 décimales dans tous les cas, etc.).

Recherchais-tu un bidule ( (question) ) de ce genre.
Je te laisse le soin de le contrôler et de l'adapter selon tes besoins personnels.
Me tenir au courant.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 17/02/2008 à 22:17
Petite note pour SFLPMEA :
Je vois que tu n'utilises toujours pas de fonctions. Je me souviens que tu as dis quelque part que tu n'en voyais pas l'utilité. Ce à que je réponds :
1) Avec une fonction, pas besoin de connaitre les variables à initialiser pour passer les paramètres
2) Pas de risque de conflit entre noms de variables, puisque les variables sont locales à la fonction
3) Possibilité de faire des fonctions récursives
4) Gagné en clarté, puisqu'utilisable dans des expressions, arithmétique par exemple.

Bon, le 4ème point ne marche que pour les fonctions, pas pour les sub ^^

Voilà, c'était donc pour répondre à une question que tu avais posés il y a quelque temps, et à laquelle je n'avais pas répondu, faute de temps. Désolé si cela vient un peu comme un cheveu sur le soupe dans ce post (clein d'oeil)
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
SFLPMEA
ProgBoarder
RemonterCiter Windows 98 Firefox 2 - Posté le 17/02/2008 à 22:32
(héhé Salutations.

1.000 regrets, Francesco : (diable) Pas de FUNCTION(s) pour SFLPMEA;

Cela va faire plus de 40 ans que je pratique les GOSUB (exclamation)
C'est trop tard pour moi.
J'ai un grand nombre de 'petits modules' avec toujours les mêmes noms de zones ce qui me permet de m'y retrouver ( (question) ) facilement .

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 17/02/2008 à 22:53
Je comprends bien SFLPMEA, les habitudes ne sont pas faciles à changer ! Quoiqu'il en soit, même si tu n'utilises pas de fonctions, je dois reconnaitre que tes utilisations de GOSUB sont relativement claires. Ce que l'on ne retrouve pas dans tout les codes (exclamation)

Et il est vrai qu'adapter tes nombreux modules prendrait certainement du temps. Par contre, ce qui pourrait être intéressant est que tu mettes en ligne tes petits modules. Cela peut toujours servir (clein d'oeil)
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Freem
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 19/02/2008 à 11:05
Héhéhé... c'est ce que l'on appelle le choc des générations xD
Trève de plansanteries, vu que SFLPMEA est passé, je pense que l'on peut considérer ce topic comme [RESOLU], non?

PS: j'ai mis un lien vers ton prog cinema dans le sujet épinglé des docs postées par les membres, j'espère que ça te va?

Edité par Freem ( 19/02/2008 11:06:41 )
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,043 s - Crédits - Stats
1 connecté