[Résolu] Base 9 sans nombre 0

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Base 9 sans nombre 0

Message par Micoute »

Bonjour à tous,

pouvez-vous m'aider à optimiser cette procédure, car on voit bien qu'il y a une logique, mais je n'arrive pas bien à la discerner.

le principe de la procédure c'est de décoder des nombre en fausse base 9 qui n'utilise pas de zéro, en vraie base décimale.

Code : Tout sélectionner

Procedure B9ToB10(Nombre.q)
   Retenue = 0
   i = 1
   While i < (Nombre / 10) * 9
      
   If Mod(i, 9) = 0 ; Nombre divisible par 9
      Retenue + 1
      NombreSortie + 1
   Else
      If Retenue <= 9
         NombreSortie = i + Retenue
      ElseIf Retenue >= 9 And Retenue < 19
         NombreSortie = i  + Retenue + 10
      ElseIf Retenue >= 19 And Retenue < 28
         NombreSortie = i  + Retenue  + 20
      ElseIf Retenue >= 28 And Retenue < 37
         NombreSortie = i + Retenue + 30
      ElseIf Retenue >= 37 And Retenue < 46
         NombreSortie = i + Retenue + 40
      ElseIf Retenue >= 46 And Retenue < 55
         NombreSortie = i + Retenue + 50
      ElseIf Retenue >= 55 And Retenue < 64
         NombreSortie = i + Retenue + 60
      ElseIf Retenue >= 64 And Retenue < 73
         NombreSortie = i + Retenue + 70
      ElseIf Retenue >= 73 And Retenue < 82
         NombreSortie = i + Retenue + 80
      ElseIf Retenue >= 82 And Retenue < 91
         NombreSortie = i + Retenue + 90
      ElseIf Retenue >= 91 And Retenue < 100
         NombreSortie = i + Retenue + 200
      ElseIf Retenue >= 100 And Retenue < 109
         NombreSortie = i + Retenue + 210
      ElseIf  Retenue >= 109 And Retenue < 118
         NombreSortie = i + Retenue + 220
      ElseIf Retenue >= 118
         NombreSortie = i + Retenue + 230
      EndIf   
   EndIf
      Debug "(" + Str(NombreSortie) + ") = " + Str(i) + " Retenue = " + Retenue
      i + 1
   Wend     
   ProcedureReturn i - 1
EndProcedure

Debug B9ToB10(1199)
Je vous ai déjà parler de ce projet et ça me ferait extrêmement plaisir de vous associer tous à ce défi qui n'est pas coton et je ne souhaite pas qu'elle calcule seulement jusqu'à 1199 !

Je vous en remercie tous par avance.
Dernière modification par Micoute le mer. 19/juin/2013 14:37, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

ENJOY :

Code : Tout sélectionner

For i=1 To 100
  Debug ("("+Str(i)+") = "+Str(i-i/10)+" Retenue = "+Str((i+1)/10))
Next

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Base 9 sans nombre 0

Message par Backup »

on n'a pas deja fait un topic la dessus ? 8O
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Dobro a écrit :on n'a pas deja fait un topic la dessus ? 8O
Non, l'autre etait bien plus facile, je m'en rappelle :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

SPH a écrit :ENJOY :

Code : Tout sélectionner

For i=1 To 100
  Debug ("("+Str(i)+") = "+Str(i-i/10)+" Retenue = "+Str((i+1)/10))
Next
Hélas non, ce n'est pas ça, car il ne faut pas de zéro !

Merci beaucoup quand même.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

Dobro a écrit :on n'a pas déjà fait un topic la dessus ? 8O
Et oui, c'est vrai, mais j'essaye une autre méthode et j'avoue que c'est un challenge très difficile, car là, il faut entrer un nombre qui à été codé en fausse base 9, disons une base 9 sans 0 et retrouver la valeur qui à été codée pour la ressortir en décimal.

Merci à vous tous !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Condamné a echouer...

Tu devrais t'orienter vers un cryptage en Xor, comme te l'avais suggeré Dobro 8)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

C'est vrai que ce serait vraiment plus simple, mais c'est pas ça qu'il faut !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

En tout cas, je continuerais a t'aider car je veux voir le resultat final :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Micoute a écrit :
SPH a écrit :ENJOY :

Code : Tout sélectionner

For i=1 To 100
  Debug ("("+Str(i)+") = "+Str(i-i/10)+" Retenue = "+Str((i+1)/10))
Next
Hélas non, ce n'est pas ça, car il ne faut pas de zéro !

Merci beaucoup quand même.
Ha oui tiens, j'ai faux !
Alors la, je ne saurais te dire... :?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

SPH a écrit :
Micoute a écrit :
SPH a écrit :ENJOY :

Code : Tout sélectionner

For i=1 To 100
  Debug ("("+Str(i)+") = "+Str(i-i/10)+" Retenue = "+Str((i+1)/10))
Next
Hélas non, ce n'est pas ça, car il ne faut pas de zéro !

Merci beaucoup quand même.
Ha oui tiens, j'ai faux !
Alors la, je ne saurais te dire... :?
Pourquoi crois-tu que je m'échine à faire des tas de IF ?
C'est un algorithme que je cherche pour qu'il me fasse les test automatiquement !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Il y a une chose qui me tracasse : est ce que tu vas transformer un fichier octet par octet ? Si oui, tu n'as que 256 possibilités. Alors, tu peux faire un tableau de 256 transformations.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Base 9 sans nombre 0

Message par GallyHC »

Je n'ai pas vraiment tout compris mais j'essais :)

Code : Tout sélectionner

Define i.i

For i=0 To 100
  If CountString(Str(i), "0") = 0
    Debug i  
  EndIf
Next i


Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

GallyHC a écrit :Je n'ai pas vraiment tout compris mais j'essais :)

Code : Tout sélectionner

Define i.i

For i=0 To 100
  If CountString(Str(i), "0") = 0
    Debug i  
  EndIf
Next i


Cordialement,
GallyHC
Tres interessant. Court et précis !

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Base 9 sans nombre 0

Message par GallyHC »

Toujours sans vraiment comprendre (le code avec le tout) :

Code : Tout sélectionner

Define.i i, j

For i=0 To 100
  If CountString(Str(i), "0") = 0
    j + 1    
    Debug ("(" + Str(j) + ") = " + Str(i) + " Retenue = " + Str((i + 1) / 10))
  EndIf
Next i
@SPH : J'aime bien les codes courts, mais fonctionnel :)

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre