elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda-- problema con ejercicio en batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda-- problema con ejercicio en batch  (Leído 7,051 veces)
estebankpo15

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Duda-- problema con ejercicio en batch
« en: 20 Septiembre 2013, 23:33 pm »

Hola este es mi primer post en este maravillóso foro
Estoy estudiando programación y tengo un problema con un batch, este es la cosigna
Tengo que crear un batch que pida en pantalla 3 números y que me los presente ordenados de mayor a menor, ósea primero: el mayor
Segundo: el que sigue del primero
Tercero: el menor

Espero no parecer un estúpido con este post pero me declaró super noob

El código que logre fue este
@echo off
set/p %núm1%=Ingrese un número
set/p %núm2%=ingrese un número
Acá lo mismo sólo que con un Núm3
If %Núm1% GTR %Núm2% goto %Núm1% GTR %Núm3%
If %Núm2% GTR %Núm3%

A eso llegue noce si voy bien o todo lo que he hecho esta mal
Espero que me ayuden. Saludos!

Enviado desde mi ST25i usando Tapatalk 2


En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Duda-- problema con ejercicio en batch
« Respuesta #1 en: 21 Septiembre 2013, 03:16 am »

Hola estebankpo15, veamos:

Citar
set/p %núm1%=Ingrese un número
Cuando a una variable se le ponen los símbolos "%" a ambos lados es para obtener su valor pero no para definirla, es decir, que con dicha línea de código estarías definiendo una variable que se llamaría como el valor con el que está definida núm1 y no la variable núm1 en sí. No se si me explico. Un ejemplo:
Código:
set /p var=Introduce un nombre
set %var%=15
En la primera línea definirías la variable "var" con el nombre que tú insertas (supongamos que insertas estebankpo), pero en la segunda estas definiendo una variable llamada "estebankpo" con un valor de 15.

En cuanto a:
Citar
If %Núm1% GTR %Núm2% goto %Núm1% GTR %Núm3%
If %Núm2% GTR %Núm3%
Cuando haces una sentencia condicional has de poner cuales serán los comandos llevados a cabo en el caso que se cumpla la condición, pues si te das cuenta comparas los números pero no hace nada. Para organizar bien vale la pena utilizar paréntesis. Para comparar los números puedes hacerlo de varias formas, una seria:
Código:
if %num1% GTR %num2% (if %num2% GTR %num3% (Echo Primero: %num1% && Echo Segundo: %num2% && Echo Tercero: %num3%))
Esto sería solo para un caso en concreto en el que  num1>num2>num3 y deberías poner los otros posibles casos.

Por cierto, en general no te aconsejo utilizar tildes por lo que respecta a la programación. En cambio, si tu redacción de la duda es correcta te tomarán más en serio.

Un saludo


« Última modificación: 21 Septiembre 2013, 03:18 am por Almapa » En línea

estebankpo15

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Re: Duda-- problema con ejercicio en batch
« Respuesta #2 en: 21 Septiembre 2013, 07:17 am »

Por lo que veo mezcle muchas cosas, jajajaja lo que pasa es que yo más o menos intente hacerlo en base a otro problema en el cual tenia que formular la tabla de multiplicar del 1 al 10 del número que ingrese en pantalla por lo que veo no tiene nada que ver con el otro problema.
Te agradecería más de lo que te agradezco ahora, si pudieras resolverlo porque tengo 2 ejercicios más parecidos a estos y necesito un ejercicio bien hecho para tener una base de como realizar los otros, y no estar molestando tanto
Muchas gracias por responder!
Saludos!

Enviado desde mi ST25i usando Tapatalk 2
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: Duda-- problema con ejercicio en batch
« Respuesta #3 en: 21 Septiembre 2013, 08:27 am »

Podrías ordenar los números por el método burbuja, pero es una técnica "avanzada" y sabrían que el code no lo has hehco tu, además como estás empezando tampoco podrías explicar mucho lo que hace, así que te muestro una manera de hacerlo mediante condicionales:


Código:
@Echo OFF

Set /A "Big=-1"
Set /A "Mid=-1"
Set /A "Low=-1"

Set /P "Num1=Inserta el numero 1>> "
Set /P "Num2=Inserta el numero 2>> "
Set /P "Num3=Inserta el numero 3>> "

If %Num1% GEQ %Num2% If %Num1% GEQ %NUM3% (Set /A "Big=Num1")
If %Num2% GEQ %Num1% If %Num2% GEQ %NUM3% (Set /A "Big=Num2")
If %Num3% GEQ %Num1% If %Num3% GEQ %NUM2% (Set /A "Big=Num3")

If %Num1% LEQ %Num2% If %Num1% LEQ %NUM3% (Set /A "Low=Num1")
If %Num2% LEQ %Num1% If %Num2% LEQ %NUM3% (Set /A "Low=Num2")
If %Num3% LEQ %Num1% If %Num3% LEQ %NUM2% (Set /A "Low=Num3")

If %Num1% GEQ %Num2% If %Num1% LEQ %NUM3% (Set /A "Mid=Num1")
If %Num1% GEQ %Num3% If %Num1% LEQ %NUM2% (Set /A "Mid=Num1")
If %Num2% GEQ %Num1% If %Num2% LEQ %NUM3% (Set /A "Mid=Num2")
If %Num2% GEQ %Num3% If %Num2% LEQ %NUM1% (Set /A "Mid=Num2")
If %Num3% GEQ %Num1% If %Num3% LEQ %NUM2% (Set /A "Mid=Num3")
If %Num3% GEQ %Num2% If %Num3% LEQ %NUM1% (Set /A "Mid=Num3")

Echo Big: %Big%
Echo Mid: %Mid%
Echo Low: %Low%

Pause&Exit
En línea

estebankpo15

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Re: Re: Duda-- problema con ejercicio en batch
« Respuesta #4 en: 22 Septiembre 2013, 06:40 am »

Podrías ordenar los números por el método burbuja, pero es una técnica "avanzada" y sabrían que el code no lo has hehco tu, además como estás empezando tampoco podrías explicar mucho lo que hace, así que te muestro una manera de hacerlo mediante condicionales:


Código:
@Echo OFF

Set /A "Big=-1"
Set /A "Mid=-1"
Set /A "Low=-1"

Set /P "Num1=Inserta el numero 1>> "
Set /P "Num2=Inserta el numero 2>> "
Set /P "Num3=Inserta el numero 3>> "

If %Num1% GEQ %Num2% If %Num1% GEQ %NUM3% (Set /A "Big=Num1")
If %Num2% GEQ %Num1% If %Num2% GEQ %NUM3% (Set /A "Big=Num2")
If %Num3% GEQ %Num1% If %Num3% GEQ %NUM2% (Set /A "Big=Num3")

If %Num1% LEQ %Num2% If %Num1% LEQ %NUM3% (Set /A "Low=Num1")
If %Num2% LEQ %Num1% If %Num2% LEQ %NUM3% (Set /A "Low=Num2")
If %Num3% LEQ %Num1% If %Num3% LEQ %NUM2% (Set /A "Low=Num3")

If %Num1% GEQ %Num2% If %Num1% LEQ %NUM3% (Set /A "Mid=Num1")
If %Num1% GEQ %Num3% If %Num1% LEQ %NUM2% (Set /A "Mid=Num1")
If %Num2% GEQ %Num1% If %Num2% LEQ %NUM3% (Set /A "Mid=Num2")
If %Num2% GEQ %Num3% If %Num2% LEQ %NUM1% (Set /A "Mid=Num2")
If %Num3% GEQ %Num1% If %Num3% LEQ %NUM2% (Set /A "Mid=Num3")
If %Num3% GEQ %Num2% If %Num3% LEQ %NUM1% (Set /A "Mid=Num3")

Echo Big: %Big%
Echo Mid: %Mid%
Echo Low: %Low%

Pause&Exit
Muchas gracias!!! A los dos por la gran ayuda ahora llegó a mi casa y lo pongo en práctica y veo si hay algo que no me queda claro y les pregunto. Saludos!!!

Enviado desde mi ST25i usando Tapatalk 2
En línea

estebankpo15

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Re: Re: Duda-- problema con ejercicio en batch
« Respuesta #5 en: 22 Septiembre 2013, 07:24 am »

Muchas gracias!!! A los dos por la gran ayuda ahora llegó a mi casa y lo pongo en práctica y veo si hay algo que no me queda claro y les pregunto. Saludos!!!

Enviado desde mi ST25i usando Tapatalk 2

Aca una duda amigo, esta parte del codigo no me quedo clara
Código:
Set /A "Big=-1"
Set /A "Mid=-1"
Set /A "Low=-1"

primero se puede cambiar los nombres de Big, mid y low?
y porque se le asicnas el valor -1 ?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: Re: Re: Duda-- problema con ejercicio en batch
« Respuesta #6 en: 22 Septiembre 2013, 07:41 am »

se puede cambiar los nombres de Big, mid y low?
Claro, puedes nombrarlas de la manera que prefieras.


porque se le asicnas el valor -1 ?

Le puse un valor negativo "-1" como podría haberle puesto un "0" o absolutamente nada,
esas tres lineas las escribí para hacer más legible el código dejando constancia del nombre de las variables que se iban a usar en el resto del código.

Y también porque considero que es una buena costumbre declarar las variables en la cabecera de un código y al mismo tiempo asignarle un valor inicial a cada variable, un valor nulo por ejemplo, aunque esto en Batch no se tiene casi en cuenta y tampoco tiene mucha importancia, para ser sinceros puedes eliminar las tres lineas de esas variables y el code seguirá funcionando... pero en otros lenguajes es conveniente hacer lo que acabo de comentar para prevenir posibles errores.

Saludos
« Última modificación: 22 Septiembre 2013, 07:44 am por EleKtro H@cker » En línea

estebankpo15

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Re: Re: Duda-- problema con ejercicio en batch
« Respuesta #7 en: 23 Septiembre 2013, 02:01 am »

Claro, puedes nombrarlas de la manera que prefieras.


Le puse un valor negativo "-1" como podría haberle puesto un "0" o absolutamente nada,
esas tres lineas las escribí para hacer más legible el código dejando constancia del nombre de las variables que se iban a usar en el resto del código.

Y también porque considero que es una buena costumbre declarar las variables en la cabecera de un código y al mismo tiempo asignarle un valor inicial a cada variable, un valor nulo por ejemplo, aunque esto en Batch no se tiene casi en cuenta y tampoco tiene mucha importancia, para ser sinceros puedes eliminar las tres lineas de esas variables y el code seguirá funcionando... pero en otros lenguajes es conveniente hacer lo que acabo de comentar para prevenir posibles errores.

Saludos

Haaaa ahora si me quedo claro, osea da lo mismo ponerle un valor negativo o nulo como 0, en todo caso como dices es solo para prolijidad.
Tambien ya descubri que podia ponerle a big, mid, low cualquier nombre :).

Ahora q lo cache bien es super fasil xD, en el caso de que me pidan hacerlo con 4 numeros tengo que agregar un parrafo mas de condisiones y otra set/p para que funcione?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: Re: Re: Duda-- problema con ejercicio en batch
« Respuesta #8 en: 23 Septiembre 2013, 04:57 am »

Ahora q lo cache bien es super fasil xD, en el caso de que me pidan hacerlo con 4 numeros tengo que agregar un parrafo mas de condisiones y otra set/p para que funcione?

Si, además de eso debes agregar la condición de la 4ª variable al resto de comparaciones (low, mid, big),
pero como te comenté al principio, existen otras técnicas más profesionales, si quieres impresionar a tu profesor (o quien sea xD) puedes ordenar los números por el método burbuja:

Google + Batch Bubble sort

Otra alternativa igual de efectiva sería:

1. Contar la cantidad de dígitos de los números para obtener el string más largo.

2. Agregar un "0" a la izquierda las veces que sean necesarias al resto de números hasta que tengan la misma longitud de dígitos que el número más largo.

3. Ordenar los números mediante Batch usando el comando Sort con la columna por defecto (1).

Saludos.
« Última modificación: 23 Septiembre 2013, 04:59 am por EleKtro H@cker » En línea

estebankpo15

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Duda-- problema con ejercicio en batch
« Respuesta #9 en: 23 Septiembre 2013, 05:44 am »

jaja, al profesor jaja. El metodo burbuja parece ya muy avanzado como dices, pero el segundo el de contar los digitos para saber el mas alto y el orden voy a ver si consigo aserlo de esa manera y investigare. Muchas gracias por la ayuda! ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio BATCH
Scripting
ne0x 1 2,830 Último mensaje 11 Mayo 2007, 17:05 pm
por ne0x
Ejercicio BATCH
Ejercicios
ne0x 1 8,028 Último mensaje 11 Mayo 2007, 17:01 pm
por ne0x
[Batch] Problema con el Quick Batch File Compiler
Scripting
najmuddin 6 5,071 Último mensaje 29 Junio 2008, 08:39 am
por najmuddin
[BATCH] Problema con Quick Batch compiler, incluir 2 archivos BAT. « 1 2 »
Scripting
daniel69 17 12,980 Último mensaje 31 Mayo 2009, 19:33 pm
por daniel69
Ejercicio batch, ayuda
Scripting
jalbtercero 2 2,124 Último mensaje 28 Enero 2016, 12:17 pm
por jalbtercero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines