Bric-à-Brac de Lord Nelson

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Besoin d'aide pour création base 10 amélioré

Message par Lord Nelson »

Personne peut m'aider svp, j'y arrive pas :(
C'est pas comme la base 2, 3, 4, ....., c'est différent là.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: Bin et BinVal maison (Bric-à-Brac Lord Nelson)

Message par poshu »

Ça n'a pas vraiment sa place dans Annonces, plutôt dans Trucs et Astuces (voir même dans Débutant, parce que c'est pas très perf et pas très utile)
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Bric-à-Brac de Lord Nelson

Message par Lord Nelson »

C'est pas moi qui l'es mis ici, c'est le modo :?
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Bric-à-Brac de Lord Nelson

Message par TazNormand »

J'ai fusionné tes messages (comme je te l'avais conseillé de le faire), et déplacé le message unique dans Débutants.
Image
Image
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Bric-à-Brac de Lord Nelson

Message par Demivec »

Lord Nelson a écrit :Comment je peut optimiser se code svp :)
Ici :) :

Code : Tout sélectionner

Procedure.s Base10VersBase10Ex(Nombre.q) ;-9223372036854775807 <= quad <= 9223372036854775808  vers  0 <= Nombre$ <= "8112260925743664697"
  Static subtrahend$ = "111111111111111111111"
  Protected chiffre, subtrahend, longueur, NombreSortie.q, NombreTemp$, Nombre$
  
  NombreTemp$ = StrU(Nombre)
  longueur = Len(NombreTemp$)
  
  chiffre = Val(Right(NombreTemp$, 1))
  Nombre = Val(Left(NombreTemp$, longueur - 1))
  
  If longueur > 1
    longueur - 1
  EndIf
  
  subtrahend = Val(Left(subtrahend$, longueur))

  If Nombre >= subtrahend
    NombreSortie = (Nombre - subtrahend) * 10 + chiffre
    Nombre$ = RSet(Str(NombreSortie), longueur + 1, "0")
  Else
    NombreSortie = (Nombre - (subtrahend / 10)) * 10 + chiffre
    Nombre$ = Str(NombreSortie)
  EndIf
  
  ProcedureReturn Nombre$
EndProcedure

Procedure.q ValBase10Ex(Nombre$) ;0 <= Nombre$ <= "8112260925743664697"  vers  -9223372036854775808 <= quad <= 9223372036854775807
  Static addend$ = "111111111111111111110"
  Protected addend, longueur, NombreSortie.q, Nombre.q
                   
  Nombre = Val(Nombre$)
  longueur = Len(Nombre$)
  addend = Val(Right(addend$, longueur))
  
  NombreSortie = Nombre + addend
    
  ProcedureReturn NombreSortie
EndProcedure

Define i, Nombre, Nombre$
For i = 0 To 1110
  Nombre$ = Base10VersBase10Ex(i)
  Nombre = ValBase10Ex(Nombre$)
  Debug "Nombre Originale = " + Str(i) + ", Nombre compresser = " + Nombre$ + ", Nombre Originale = " + Nombre
Next

@Éditer: Maintenant utilise gamme complète de quad
Dernière modification par Demivec le mar. 18/nov./2014 22:55, modifié 1 fois.
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Bric-à-Brac de Lord Nelson

Message par Lord Nelson »

Bonjour Demivec :)

Milles merci pour se super code encore une fois :D
Je dois avouer que vous me laisser vraiment sur le Q, vous être vraiment très fort :wink:
Cordialement.

Edit: Sa ne fonctionne pas avec 9999999999999999999... 18446744073709551615
Est-ce normale ?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Bric-à-Brac de Lord Nelson

Message par Ollivier »

Nelson a écrit :Edit: Sa ne fonctionne pas avec 9999999999999999999... 18446744073709551615
Est-ce normale ?
Si tu as le temps, débogue son programme.
Tu le reprends, ligne par ligne pour comprendre ce que Demivec a cogité. Il a dû allouer du temps pour t'aider. Alloue-y le tiens.

N'oublie point aussi ce que je t'ai dit pour l'addition de deux nombres stockés chacun dans une chaîne: c'est la porte qui te mène à bon nombre d'applications opératoires.
C'est la seule solution pour arriver à tes fins. Si tu en trouves une autre, elle te conduira à l'échec.

1) Il y a longtemps, la lumière était considéré comme un fluide trouble et diffus.

2) Puis quelqu'un s'est élevé en affirmant qu'il s'agissait d'un ensemble de rayons parfaitement rectilignes.

3) Puis quelques siècles plus tard, quelqu'un d'autre s'est élevé pour dire que la lumière pouvait courber.

Plusieurs siècles séparent ces étapes. Un jour peut-être (dans longtemps, en tout cas) dira-t-on que la lumière n'est pas faite de rayons, mais de cordes parfaitement immobiles qui ne font que passer un message énergétique directionnel. (j'ai pris à gauche? je donne à droite... J'ai pris en haut? je donne en bas... Etc...). Il y a une chance sur 10 puissance 500 de valider cette hypothèse.

Un jour bien lointain à venir dira-t-on peut-être que ces cordes sont loin d'être immobiles. Que toutes ces "boucles" incertaines ne font qu'une, donc qu'elles se moquent de l'endroit où elles campent puisqu'elles seront, comme elles ont été, celles d'à côté, comme celles à l'autre bout de l'Univers.

Tu as fait un sujet "bric-à-brac". C'est très bien. N'hésite pas à imaginer ce code d'addition de nombres stockées dans des chaînes. Elles te permettent de les contrôler visuellement, mais te permettent aussi de communiquer pour en apprendre sur les calculs.

Comment faire une addition sur papier? Comment interpréter cette méthode dans un programme?
J'insiste un peu, mais c'est comme la lumière: on commence par des règles, puis l'on s'accroche pour les contredire, ce qui apporte d'autres règles plus complexes, etc...
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Bric-à-Brac de Lord Nelson

Message par Demivec »

Lord Nelson a écrit :Edit: Sa ne fonctionne pas avec 9999999999999999999... 18446744073709551615
Est-ce normale ?

Code : Tout sélectionner

0 <= Nombre$ <= "8112260925743664697"  devient  0 <= Quad <= 9223372036854775807
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Bric-à-Brac de Lord Nelson

Message par Lord Nelson »

J'ai mis pas mal de temps à comprendre se que vous avez voulus me dire :)

Ok, mais est-ce normale qu'on ne puisse pas aller au delà de 9223372036854775807 ?
Par exemple se serais bien de pouvoir aller jusque 18446744073709551615 qui est aussi un quad.

Merci pour tous.
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Bric-à-Brac de Lord Nelson

Message par Demivec »

Lord Nelson a écrit :J'ai mis pas mal de temps à comprendre se que vous avez voulus me dire :)

Ok, mais est-ce normale qu'on ne puisse pas aller au delà de 9223372036854775807 ?
Par exemple se serais bien de pouvoir aller jusque 18446744073709551615 qui est aussi un quad.
Regarde dans le fichier d'aide de PB : Thèmes généraux ==> Variables, Types et Opérateurs ('Quad')
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Bric-à-Brac de Lord Nelson

Message par Lord Nelson »

Quad .q 8 octets -9223372036854775808 à +9223372036854775807
Mais avec StrU() ont peut monter jusque 18446744073709551615.
Ton code ne gère pas cela !

Bon, c'est pas grave, merci quand même Demivec, c'est bien déjà :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Bric-à-Brac de Lord Nelson

Message par Ollivier »

Usuellement, on travaille avec des nombres signés. Le "U" de StrU est l'initiale de Unsigned.

Ce n'est pas son code à Demivec qui gère pas, mais c'est toi qui n'en fait qu'à ta tête... T'attends quoi pour travailler sur 2 chaînes de nombres qui s'additionnent?
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Bric-à-Brac de Lord Nelson

Message par Lord Nelson »

Salut,

Bon, j'ai assez saoulé tous le monde, je vais digérer et cogiter un peut de mon coté avec se que vous m'avez si gentiment proposé.
Je vous remercie tous pour votre précieuse aide.

J'ai beaucoup à apprendre et je m'éparpille beaucoup de trop, je cherche à faire des
choses alors que j'ai même pas les outils ni les bases pour le faire :(

Je suis comme ça, je suis pressé et forcement je saute pas mal de chose !
Mais, j'ai appris, et j'apprendrais encore !

Je vais me poser un peut.

@Ollivier, il serait intéressant que je m’attaque à cette partie pour le fun.
Merci.

Cordialement.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Bric-à-Brac de Lord Nelson

Message par Ollivier »

Exact. C'est assez simple, mais ça demande à se poser les bonnes questions.

Il faut commencer par simple:

A$ = "123"
B$ = "456"

Comment obtenir le résultat de la somme dans X$?
Ça n'a vraiment rien de bas de travailler les choses simples.

Ça commence sur papier, et ça termine sur l'ordi. Poste juste un code (dans CE sujet!) qui résoud ce problème ci-dessus, sans plus.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Bric-à-Brac de Lord Nelson

Message par Ollivier »

Je précise bien que si tu postes un code, c'est pour t'en filer un après...
Répondre