Autor
|
Tema: Duda-- problema con ejercicio en batch (Leído 7,378 veces)
|
estebankpo15
Desconectado
Mensajes: 25
|
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
Mensajes: 111
|
Hola estebankpo15, veamos: 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: 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: 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: 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
Mensajes: 25
|
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
Mensajes: 9.878
|
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: @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
Mensajes: 25
|
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: @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
Mensajes: 25
|
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 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
Mensajes: 9.878
|
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
Mensajes: 25
|
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
Mensajes: 9.878
|
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 sortOtra 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
Mensajes: 25
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ejercicio BATCH
Scripting
|
ne0x
|
1
|
3,014
|
11 Mayo 2007, 17:05 pm
por ne0x
|
|
|
Ejercicio BATCH
Ejercicios
|
ne0x
|
1
|
8,255
|
11 Mayo 2007, 17:01 pm
por ne0x
|
|
|
[Batch] Problema con el Quick Batch File Compiler
Scripting
|
najmuddin
|
6
|
5,341
|
29 Junio 2008, 08:39 am
por najmuddin
|
|
|
[BATCH] Problema con Quick Batch compiler, incluir 2 archivos BAT.
« 1 2 »
Scripting
|
daniel69
|
17
|
13,668
|
31 Mayo 2009, 19:33 pm
por daniel69
|
|
|
Ejercicio batch, ayuda
Scripting
|
jalbtercero
|
2
|
2,334
|
28 Enero 2016, 12:17 pm
por jalbtercero
|
|