Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Batch


Like Tree2Me Gusta
  • 1 Post By EleKtro
  • 1 Post By EleKtro

Respuesta Crear Nuevo Tema
 
Compartir en twitter LinkBack Herramientas Desplegado
Antiguo 07-mar-2012, 17:34   #1
Recien llegado
 
Fecha de Ingreso: marzo-2012
Amigos 0
Mensajes: 3
Gracias: 2
Agradecido 0 veces en 0 mensajes.
Post Ordenar de menor a mayor

Buenas, andamos batallando en clase para conseguir hacer un programa que ordene un fichero de menor a mayor usando bucles for. La idea es que un for de vueltas y coja el número más alto y lo vaya comparando con los demás, para así ordenarlo, pero no se muy bien como hacerlo. Tengo el for para que lea todas las lineas, y supongo que habría que hacer otro for dentro, delimitando variables pero ahí me quedo... Si me podéis echar una mano explicándome un poco.. os lo agradecería mucho

Código:

@echo off

set /p nm=Elige el fichero a ordenar: 

for /F "delims=" %%a IN (%nm%) do (
  
sat331 está desconectado   Responder Citando
Antiguo 07-mar-2012, 18:23   #2
Ninja y moderador
 
Avatar de EleKtro
 
Fecha de Ingreso: marzo-2011
Ubicación: Valencia city, Spain
Amigos 20
Mensajes: 1.236
Gracias: 1.953
Agradecido 402 veces en 284 mensajes.
Predeterminado Respuesta: Ordenar de menor a mayor

Diste poquisima información como para recibir ayuda...

Primero describe el contenido del archivo.

Pon un ejemplo del texto. No sabemos si solo conteiene números o cadenas con caracteres o que.

Y el tipo de numeración, ya que no es lo mismo "1", que "01" o "0,1".

PD: En batch no se puede realizar operaciones con decimales.

Salu2.
EleKtro está desconectado   Responder Citando
Antiguo 07-mar-2012, 20:30   #3
Ninja y moderador
 
Avatar de EleKtro
 
Fecha de Ingreso: marzo-2011
Ubicación: Valencia city, Spain
Amigos 20
Mensajes: 1.236
Gracias: 1.953
Agradecido 402 veces en 284 mensajes.
Predeterminado Respuesta: Ordenar de menor a mayor

Si la numeración es de tipo burbuja (1..9..10) o de tipo (01..09..010) Te servirá este script que te he echo, .

PD: Pone elektro h@cker, Pero soy la misma persona.

Salu2!



Código:
@Echo OFF

Title Ordenar numeracion

Rem Ordenar archivo de texto numérico.
Rem By Elektro H@cker

:Menu
Echo Arrastra el archivo a la consola... | More
Set /P Archivo=^>^>^> 
If NOT defined Archivo (Goto :Menu)
Del /Q "%TEMP%\ordenar.tmp" 2>Nul
Del /Q "Texto Ordenado.txt" 2>Nul
Cls

:Leer_Input
For /F %%# IN ('Type "%Archivo%"') do (Call :Ordenar %%#)
Goto :Mostrar_Output

:Ordenar
ECHO %1 > "%TEMP%\Num.tmp"
FOR %%? IN ("%TEMP%\Num.tmp") DO (SET /A Digitos=%%~z? - 3)
For /F "Tokens=*" %%# IN ('Echo "%Digitos%"') do (Set "Nulos=%%#;" & Call :Escribir %1)
Goto :EOF

:Escribir
echo %Nulos%%1 >>"%TEMP%\ordenar.tmp"
goto :EOF

:Mostrar_Output
For /F "Tokens=2 Delims=;" %%# IN ('Type "%TEMP%\ordenar.tmp" ^| Sort') do (Echo %%# & Echo %%#>>"Texto Ordenado.txt")
Pause
  

Input:




Output:

sat331 le gusta esto.
EleKtro está desconectado   Responder Citando
El Siguiente Usuario Agradeció a EleKtro Por Este Mensaje:
sat331 (08-mar-2012)
Antiguo 08-mar-2012, 08:49   #4
Recien llegado
 
Fecha de Ingreso: marzo-2012
Amigos 0
Mensajes: 3
Gracias: 2
Agradecido 0 veces en 0 mensajes.
Predeterminado Respuesta: Ordenar de menor a mayor

Buenas, es solo un fichero txt de esta manera!
Cita:
1
65
432
44
53
12
El que me proporcionaste tu funciona a la perfección Podrías explicármelo brevemente?

gracias!!
sat331 está desconectado   Responder Citando
Antiguo 08-mar-2012, 16:20   #5
Ninja y moderador
 
Avatar de EleKtro
 
Fecha de Ingreso: marzo-2011
Ubicación: Valencia city, Spain
Amigos 20
Mensajes: 1.236
Gracias: 1.953
Agradecido 402 veces en 284 mensajes.
Predeterminado Respuesta: Ordenar de menor a mayor

Cita:
Iniciado por sat331 Ver Mensaje
Buenas, es solo un fichero txt de esta manera!
Podrías explicármelo brevemente?
gracias!!
Cada linea del texto se procesa por separado

Imaginemos que la primera línea contiene el número "291"

1º - Primero se escribe el número en el archivo "%TEMP%\Num.tmp"

2º - Se obtiene la longitud del número escrito (Ejemplo: "291" la longitud es "3") y se guarda en la variable %Digitos%

3º - Se lee la variable "digitos" y se crea un simbolo delimitador ";" (Quedaría así: "3;")

4º - Se le añado el número a la derecha del símbolo delimitador "3;291" y se escribe en el archivo "%TEMP%\ordenar.tmp"

De esta manera es más facil ordenarlo porque el comando "SORT" por defecto solo ordena la primera columna.

5º - Usamos SORT para ordenar "%TEMP%\ordenar.tmp" y solo mostramos el número de la derecha del delimitador.




La diferencia de todo esto es que... Gracias al primer número (la longitud) y al delimitador ( ; ) Sort lo ordena así:

2;20
2;30
3;200
3;291


Si usaramos SORT (Con o sin el switch /+[número]) para ordenar, el resultado sería este:

20
200
291
30


Resumiendo, Batch nos lo pone todo muy dificil xD

salu2
sat331 le gusta esto.
EleKtro está desconectado   Responder Citando
El Siguiente Usuario Agradeció a EleKtro Por Este Mensaje:
sat331 (08-mar-2012)
Antiguo 08-mar-2012, 18:16   #6
Recien llegado
 
Fecha de Ingreso: marzo-2012
Amigos 0
Mensajes: 3
Gracias: 2
Agradecido 0 veces en 0 mensajes.
Predeterminado Respuesta: Ordenar de menor a mayor

muchisimas gracias! lo he captado
si encontramos otra forma de hacerlo lo pondré por aqui por si a alguien le sirve!
sat331 está desconectado   Responder Citando
Antiguo 08-mar-2012, 19:04   #7
Ninja y moderador
 
Avatar de EleKtro
 
Fecha de Ingreso: marzo-2011
Ubicación: Valencia city, Spain
Amigos 20
Mensajes: 1.236
Gracias: 1.953
Agradecido 402 veces en 284 mensajes.
Predeterminado Respuesta: Ordenar de menor a mayor

Cita:
Iniciado por sat331 Ver Mensaje
si encontramos otra forma de hacerlo lo pondré por aqui por si a alguien le sirve!
Hombre, en google encontrarás muchas maneras distintas, slo tienes que buscar "sort numbers in batch", Pero te quise hacer mi ejemplo propio.


[Solo usuarios registrados pueden ver los links. REGISTRARSE]



[Solo usuarios registrados pueden ver los links. REGISTRARSE]



[Solo usuarios registrados pueden ver los links. REGISTRARSE]




saludos
EleKtro está desconectado   Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
[G]Duda sobre ordenar texto Axelkb Batch 8 11-jun-2011 16:37
ordenar numeros tomario Carbide C/C#/C++ 3 08-dic-2010 10:31



Portal Hacker
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0