Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Groupement de caractères...
Auteur Message
Répondre en citant
Message Groupement de caractères... 
Bonjour à tous,

(Je suis nouveau sur le forum)
Ayant quelques notions de base en programmation batch, je me suis lancé dans un projet censé transformer l'alphabet latin en un alphabet composé de trois signes différents (ici . : et ' ), ce qui me donne au total 3³ soit 27 possibilités: 26 lettres de l'alphabet et la dernière pour l'espace.

Je m'en suis sorti tout seul pour le passage de l'alphabet latin à l'alphabet composé mais pour l'inverse, un problème se pose.
je procède de la manière suivante (voici un extrait du programme):

echo Entrez le texte en alphabet latin:
SET /P _entr=
SET rtA=%_entr: ='''%
SET rtB=%rtA:a=...%
SET rtC=%rtB:b=..:%
SET rtD=%rtC:c=.:'%
SET rtE=%rtD:d=.:.%
SET rtF=%rtE:e=.::%
SET rtG=%rtF:f=.''%
SET rtH=%rtG:g=.'.%
SET rtI=%rtH:h=.':%
SET rtJ=%rtI:i=.''%
SET rtK=%rtJ:j=:..%
SET rtL=%rtK:k=:.:%
SET rtM=%rtL:l=:.'%
SET rtN=%rtM:m=::.%
SET rtO=%rtN:n=:::%
SET rtP=%rtO:o=::'%
SET rtQ=%rtP:p=:'.%
SET rtR=%rtQ:q=:':%
SET rtS=%rtR:r=:''%
SET rtT=%rtS:s='..%
SET rtU=%rtT:t='.:%
SET rtV=%rtU:u='.'%
SET rtW=%rtV:v=':.%
SET rtX=%rtW:w='::%
SET rtY=%rtX:x=':'%
SET rtZ=%rtY:y=''.%
SET _trad=%rtZ:z='':%
CLS
echo Traduction:
echo %_trad%
pause

Mais du coup, quand j'inverse l'alphabet composé avec l'alphabet latin, le programme voit par exemple le mot "bonjour" écrit ..:::'::::..::''.':'' le programme détecte tous les groupements de trois caractères formant des lettres qui lui sont connues, peu importe leur place dans le mot.
Vous l'avez compris, j'aimerais lui faire comprendre qu'il doit lire les caractères par groupes de trois indépendants des autres groupes, mais dans l'ordre de la table de 3. Soit "1ière lettre=3 premiers caractères, 2ième lettre=3 caractères suivants, etc..." Mais comment ?

Si ce n'est pas possible, je suis ouvert à toute remise en question de mon programme Smile

Merci d'avance.



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Groupement de caractères... 
split ton string tous les 3 carctères et fait la substitution.

Mais le f et le i ont seulement 2 caractèrs (et les mêmes) donc ça va bugger.

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Groupement de caractères... 
Ok, alors merci pour le f et le i, je n'avais pas remarqué, c'est une erreur de ma part Very Happy
Pour ce qui est du reste, pourriez vous m'expliquer plus ou moins en quoi ça consiste ? Parce que je ne fait que débuter dans le domaine... Crying or Very sad



Répondre en citant
Message Groupement de caractères... 
Salut, alors voici une façon de procéder : http://pastebin.com/yWy4YfSq
Bon j'avoue c'est pas très optimiser mais ça fait l'affaire je pense Mr. Green

J'ai remplacé celui du i par ..' pour qu'il ne soit pas pareil que celui du f Okay


Alors ça fonctionne comme une fonction, tu l'appelle avec call et tu lui met le nom de la var en paramètre avec le mode :

Mode 0 : lt_to_symbol
Mode 1 : symbol_to_lt


Code:

rem On demande a l'utilisateur de rentrer un truc qui va être converti en lettre donc il doit écrire avec les symboles
set /p salut=
call :TRANSLATE salut 1
echo;!salut!


rem ici on demande pas a l'utilisateur de rentrer quelques choses
rem On met le mode 0, donc ce sont cette fois-ci des lettres qui seront converti en symboles :
set "text=salut toi"
call :TRANSLATE text 0
echo;!text!



_______
EDIT :

Comme le code est petit je le met ici :

Code:
@echo off
::By Flammrock
 
setlocal enabledelayedexpansion enableextensions
 


rem Le charset ici :
set "charset_lt=a b c d e f g h i j k l m n o p q r s t u v w x y z °"
set "charset_symbol=... ..: .:' .:. .:: .'' .'. .': ..' :.. :.: :.' ::. ::: ::' :'. :': :'' '.. '.: '.' ':. ':: ':' ''. '': '''"
::                   a   b   c   d    e   f  g   h   i    j   k  l   m   n   o   p   q   r    s   t   u   v   w  x    y   z
 




rem Petit code d'exemple :

echo Entrez le texte en alphabet latin:
set /p _entr=
call :TRANSLATE _entr 0
echo;!_entr!
echo;
 
echo Entrez le texte en symbole:
set /p _une_autre_var_=
call :TRANSLATE _une_autre_var_ 1
echo;!_une_autre_var_!
echo;
>nul ping -n -1 localhost

rem End Petit code d'exemple






rem La fonction :
:TRANSLATE
  set "var=%~1"
  if "%~2"=="1" goto :symbol_to_lt
  :lt_to_symbol
    set "%var%=!%var%: =°!"
    set /a nb_char_lt=0
    for %%A in (%charset_lt%) do (
      set /a nb_char_symbol=0
      for %%B in (%charset_symbol%) do (
        if "!nb_char_symbol!"=="!nb_char_lt!" (
          set %var%=!%var%:%%A=%%B!
        )
        set /a nb_char_symbol+=1
      )
      set /a nb_char_lt+=1
    )
    goto :eof
  :symbol_to_lt
    set "_entr_=!%var%!"
    set "_entr__="
    set nb_char=-1
    :b
    set /a nb_char+=1
    set test=!_entr_:~%nb_char%,1!
    if not "%test%"=="" goto :b
    for /l %%A in (0,3,!nb_char!) do (
      set /a nb_char_lt=0
      for %%B in (%charset_lt%) do (
        set /a nb_char_symbol=0
        for %%C in (%charset_symbol%) do (
          if "!nb_char_symbol!"=="!nb_char_lt!" (
            if "!_entr_:~%%A,3!"=="%%C" (
              set _entr__=!_entr__!%%B
            )
          )
          set /a nb_char_symbol+=1
        )
        set /a nb_char_lt+=1
      )
    )
    set "%var%=!_entr__:°= !"
    goto :eof





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message Groupement de caractères... 
Merci beaucoup Flammrock, ça résout bien mon problème ! Very Happy Very Happy



Répondre en citant
Message Groupement de caractères... 
Roger0007 a écrit:
Merci beaucoup Flammrock, ça résout bien mon problème ! Very Happy Very Happy


De rien Mr. Green
Si tu as d'autres problèmes, ou bien des choses que tu ne comprend pas : n'hésite pas à revenir ici Okay




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message Groupement de caractères... 
Tout à fait, j'ai tout de suite mis ce site en favoris XD Okay Okay



Répondre en citant
Message Groupement de caractères... 
Flammrock a écrit:
Salut, alors voici une façon de procéder : http://pastebin.com/yWy4YfSq
Bon j'avoue c'est pas très optimiser mais ça fait l'affaire je pense Mr. Green

J'ai remplacé celui du i par ..' pour qu'il ne soit pas pareil que celui du f Okay


Alors ça fonctionne comme une fonction, tu l'appelle avec call et tu lui met le nom de la var en paramètre avec le mode :

Mode 0 : lt_to_symbol
Mode 1 : symbol_to_lt


Code:

rem On demande a l'utilisateur de rentrer un truc qui va être converti en lettre donc il doit écrire avec les symboles
set /p salut=
call :TRANSLATE salut 1
echo;!salut!


rem ici on demande pas a l'utilisateur de rentrer quelques choses
rem On met le mode 0, donc ce sont cette fois-ci des lettres qui seront converti en symboles :
set "text=salut toi"
call :TRANSLATE text 0
echo;!text!



_______
EDIT :

Comme le code est petit je le met ici :

{{{Code complet_____<-- Clique pour dérouler Mr. Green }}}
On peut le dire que c'est pas optimisé Mort de Rire, tu as du t'ennuyer Mr. Green ^^

J'ai fais BIEN plus simple :
Code:
setlocal enabledelayedexpansion

for %%A in (
    "a=... " "b=..: " "c=.:' "
    "d=.:. " "e=.'. " "f=.'' "
    "g=.'. " "h=.': " "i=.'' "
    "j=:.. " "k=:.: " "l=:.' "
    "m=::. " "n=::: " "o=::' "
    "p=:'. " "q=:': " "r=:'' "
    "s='.. " "t='.: " "u='.' "
    "v=':. " "w=':: " "x=':' "
    "y=''. " "z='': " "  = ''' "
) do set "var=!var:%%~A!"





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Groupement de caractères... 
En effet c'est beaucoup plus simple, et plus facile à comprendre aussi XD
Merci à vous Okay



Répondre en citant
Message Groupement de caractères... 
Mais au fait, elle a beau être plus simple, je ne vois pas comment l'intégrer dans une "question-réponse" si je puis dire...
Comment fait-on pour faire paraître le résultat à l'écran ?



Répondre en citant
Message Groupement de caractères... 
Roger0007 a écrit:
Mais au fait, elle a beau être plus simple, je ne vois pas comment l'intégrer dans une "question-réponse" si je puis dire...
Comment fait-on pour faire paraître le résultat à l'écran ?
Il suffit d'ajouter ce question réponse :
Code:
@Echo off
setlocal enabledelayedexpansion

set /p var=Entrez votre texte à traduire :

for %%A in (
    "a=... " "b=..: " "c=.:' "
    "d=.:. " "e=.'. " "f=.'' "
    "g=.'. " "h=.': " "i=.'' "
    "j=:.. " "k=:.: " "l=:.' "
    "m=::. " "n=::: " "o=::' "
    "p=:'. " "q=:': " "r=:'' "
    "s='.. " "t='.: " "u='.' "
    "v=':. " "w=':: " "x=':' "
    "y=''. " "z='': " "  = ''' "
) do set "var=!var:%%~A!"

echo Texte traduit : %var%
>nul pause





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Groupement de caractères... 
Merci, j'ai réussi, je m' étais bêtement trompé Mr. Green



Répondre en citant
Message Groupement de caractères... 
Hello Very Happy
Si ton sujet est résolu,ce qui est le cas avec le code de Tsnake,n’oublie pas de mettre le sujet en [R] Wink




______________________________________________________
LT-S Batch explorer :Un explorateur en Batch
ConsoleINI : utilisez des fichiers INI dans vos Batch
Epileptic : un mini jeu de rapidité
Faites parler votre téléphone avec mon app android
Mon site pour voir tout mes autres programmes
Visiter le site web du posteur Skype
Répondre en citant
Message Groupement de caractères... 
logan T a écrit:
Hello Very Happy
Si ton sujet est résolu,ce qui est le cas avec le code de Tsnake,n’oublie pas de mettre le sujet en [R] Wink


C'est le cas avec mon code aussi Evil or Very Mad




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Message Groupement de caractères... 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch