Trier une variable (chiffre) croissant ?

L'enfantPerdu -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
J''ai une variable (chiffre) que je veut trier ordre croissant (ex: 1598753 devient 1355789). Comment faire ?

Voici le bout de code que j'ai commencé:

:debut

cls

echo.
echo Rentre une serie de chiffre:
echo.
set /p "serie_de_chiffre=> "

echo %serie_de_chiffre%|findstr /r "[^0-9]" > nul

IF ERRORLEVEL 1 goto suite

IF NOT ERRORLEVEL 1 goto faux_1

:faux_1

echo.
echo Une serie de chiffre!

timeout /t 3 >nul

goto debut

:suite

cls

echo.
echo Ta serie de chiffre est donc:
echo.
echo %serie_de_chiffre%
echo.
echo.
echo [OUI]
echo [NON]
echo.
set /p "serie_de_chiffre?=> "

if /i %serie_de_chiffre?%==oui goto continu
if /i %serie_de_chiffre?%==non goto debut

echo.
echo Pas comprit..

timeout /t 3 >nul

goto suite

:continu

cls

echo.
echo SERIE DE CHIFFRE:
echo.
echo %serie_de_chiffre%
echo.
echo.
echo TRIER:
echo.
-------------------------------------------------------------------------------------
CODE POUR TRIER LA VARIABLE
-------------------------------------------------------------------------------------
echo %serie_de_chiffre%

pause>nul

1 réponse

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonsoir,

    Voilà la solution :

    @echo off & Setlocal EnableDelayedExpansion

    set chaine=192634355673879
    echo La serie de chiffres a trier : %chaine%
    echo. & color 0A

    set /a zero=0
    set /a une=0
    set /a deux=0
    set /a trois=0
    set /a quatre=0
    set /a cinq=0
    set /a six=0
    set /a sept=0
    set /a huit=0
    set /a neuf=0

    for /L %%A in (0,1,1000) do (

    set nombre=!chaine:~%%A,1!

    if "!nombre!" == "" goto suite

    if "!nombre!" == "0" set /a zero+=1
    if "!nombre!" == "1" set /a une+=1
    if "!nombre!" == "2" set /a deux+=1
    if "!nombre!" == "3" set /a trois+=1
    if "!nombre!" == "4" set /a quatre+=1
    if "!nombre!" == "5" set /a cinq+=1
    if "!nombre!" == "6" set /a six+=1
    if "!nombre!" == "7" set /a sept+=1
    if "!nombre!" == "8" set /a huit+=1
    if "!nombre!" == "9" set /a neuf+=1

    )

    :suite

    set zero=!zero!0
    set une=!une!1
    set deux=!deux!2
    set trois=!trois!3
    set quatre=!quatre!4
    set cinq=!cinq!5
    set six=!six!6
    set sept=!sept!7
    set huit=!huit!8
    set neuf=!neuf!9

    for %%D in (!zero! !une! !deux! !trois! !quatre! !cinq! !six! !sept! !huit! !neuf!) do (

    set carac=%%D

    set /a chiffre=!carac:~-1!

    if !carac! GEQ 100 (set /a repet=!carac:~0,2!) else (set /a repet=!carac:~0,1!)

    echo Le chiffre !chiffre! est present !repet! fois

    if "!repet!"=="0" (set /a repet=1 & set chiffre=)

    for /L %%B in (1,1,!repet!) do (

    set result=!result!!chiffre!

    )

    )

    echo.
    echo Voila le resultat : !result!
    echo. & echo.

    Endlocal
    pause
    exit
    0