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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ordenar 3 valores de menor a mayor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ordenar 3 valores de menor a mayor  (Leído 19,727 veces)
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
ordenar 3 valores de menor a mayor
« en: 17 Abril 2022, 11:38 am »

como ordeno 3 valores de menor a mayor? según la combinatoria de 3,2 me da 6 casos posibles o no se...

Código
  1. a = 3
  2. b = 1
  3. c = 8
  4.  
  5. if a <= b <= c:
  6.    print(f'{a}, {b}, {c}')
  7. elif a <= c <= b:
  8.    print(f'{a}, {c}, {b}')
  9. elif b <= a <= c:
  10.    print(f'{b}, {a}, {c}')
  11. elif b <= c <= a:
  12.    print(f'{b}, {c}, {a}')
  13. elif c <= a <= b:
  14.    print(f'{c}, {a}, {b}')
  15. elif c <= b <= a:
  16.    print(f'{c}, {b}, {a}')
  17. else:
  18.    print(f'{a}, {b}, {c}')


En línea

7w7
Tachikomaia


Desconectado Desconectado

Mensajes: 1.180


Superhacker (es broma xD )


Ver Perfil
Re: ordenar 3 valores de menor a mayor
« Respuesta #1 en: 17 Abril 2022, 12:41 pm »

Tal vez esto te ayude:
https://foro.elhacker.net/scripting/iquestordenar_turnos_por_velocidad-t511410.0.html;msg2247305#msg2247305
pero ahí se ordena de mayor a menor.

También tengo esto que tal vez te ayude si logras ajustarlo a tus objetivos:
NOTA: Por algún motivo escribo "Saver" y lo cambia a "saber"  :o
Código
  1.      PlaSp = 1;
  2.      En1Sp = 1;
  3.      En2Sp = 10;
  4.      T1 = "Pla";
  5.      T2 = "En1";
  6.      T3 = "En2";
  7.      if (eval(T1+"Sp") < eval(T2+"Sp")) {
  8.         saber = eval(T1);
  9.         T1 = eval(T2);
  10.         T2 = saber;
  11.      }
  12.      if (eval(T2+"Sp") < eval(T3+"Sp")) {
  13.         saber = eval(T2);
  14.         T2 = eval(T3);
  15.         T3 = saber;
  16.      }
  17.      if (eval(T1+"Sp") < eval(T2+"Sp")) {
  18.         saber = eval(T1);
  19.         T1 = eval(T2);
  20.         T2 = saber;
  21.      }

Probabledmente debes hacer:
Código:
Si C<B
   saber = B
   B=C
   C=saber
fin del si
Si B<A
   Saber = A
   A=B
   B=saber
fin del si
Si C<B
   saber = B
   B=C
   C=saber
fin del si
Digo probablemente porque no soy muy hábil en estas cosas.


« Última modificación: 17 Abril 2022, 12:46 pm por Tachikomaia » En línea

Falo Zipo Pixote

Desconectado Desconectado

Mensajes: 143


Ver Perfil
Re: ordenar 3 valores de menor a mayor
« Respuesta #2 en: 17 Abril 2022, 13:05 pm »

La toma de decisiones es con if... else.

#elif -en la cabecera y no elif como instrucción- es una directiva para la precompilación condicional de partes del archivo fuente.

Me parece.

Tampoco creo que sea válida una función print.  En C tienes printf. Y en C++ cout. Además si fuera printf no sería como lo escribres; printf lleva un formateado con comillas..."" y secuencias de escape (en su caso), y formateado de salida de datos en decimal, flotante, etc.

La condición del if siempre se coloca entre paréntesis:
if (.....lo que sea....)

La concatenación de varias condiciones se explicita con el AND lógico (en C/C++ se escribe &&). Aunque se puede escribir: a <= b <= c
el resultado no va a ser el esperado, se debería escribir: a <= b  && b <= c
Todas las instrucciones deben terminar con punto y coma ;

Los if no tienen dos puntos :
o tienen una instrucción (si es solo una) o si son varias se agrupan todas ellas entre llaves:
{
...}

En fin, creo que te has confundido al poner tu mensaje en el foro C/C++ porque ese código no parece ser ni uno ni otro. Igual querías postear en otro foro.
« Última modificación: 17 Abril 2022, 17:20 pm por Falo Zipo Pixote » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ordenar 3 valores de menor a mayor
« Respuesta #3 en: 17 Abril 2022, 21:25 pm »

Creo que es Python
En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ordenar 3 valores de menor a mayor
« Respuesta #4 en: 20 Abril 2022, 22:31 pm »

El código publicado en el mensaje original es Python sí, no es C.
Además dicho código funciona correctamente aunque el último 'else' no se va a ejecutar nunca (y por tanto también sobra el último 'elif' pudiendo ser un simple 'else') ya que no existen más casos.

Por otro lado, sí, las combinaciones posibles son 6 (las que tienes espeficadas). No hay más formas de ordenar 3 elementos {a, b, c} más que:
Código:
a - b - c
a - c - b
b - a - c
b - c - a
c - a - b
c - b - a

Lo que me da a entender que quieres hacer lo mismo en C y obviamente no va a ser tan sencillo, esa es la magia de C.
En C las comparaciones tienen que hacerse entre 2 elementos así que...
Código
  1. if (a >= b) {
  2.  if (b >= c) {
  3.    // a - b - c
  4.  } else if (a >= c) {
  5.    // a - c - b
  6.  } else {
  7.    // c - a - b
  8.  }
  9. } else {
  10.  if (c >= b) {
  11.    // c - b - a
  12.  } else if (a >= c) {
  13.    // b - a - c
  14.  } else {
  15.    // b - c - a
  16.  }
  17. }
  18.  
Y ahí tienes tus 6 combinaciones posibles.  :rolleyes:
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Falo Zipo Pixote

Desconectado Desconectado

Mensajes: 143


Ver Perfil
Re: ordenar 3 valores de menor a mayor
« Respuesta #5 en: 21 Abril 2022, 15:12 pm »

Así es; es un forma de establecer las decisiones. Otra forma de hacerlo, que quizá al autor/a del mensaje le sea más inteligible, por ser traslación más literal de su código y le pueda ser más familiar, sería emplear el AND lógico:
Código:
if (a <=b && b <= c)
  // caso a-b-c
else
  if (a <= b && c <= b)
    // caso a-c-b
   else
etc...

Efectívamente, es la magia de C. Por ejemplo otra forma de resolverlo (quizá algo más críptica) sería:
Dado que las posibles comparaciones son tres:
a <= b
b <= c
a <= c
Y dado que en C al hacer cada una de ellas puede devolver u 0 o un 1, según sea cierta o no.
Tenemos 6 combinaciones de ceros y unos. Lo que da en binario (pongo al lado el decimal correspondiente):
0 - 0 - 0 ----> 0
0 - 0 - 1 ----> 1
0 - 1 - 0 ----> 2
1 - 0 - 1 ----> 5
1 - 1 - 0 ----> 6
1 - 1 - 1 ----> 7

Por lo que otra forma de programarlo podría ser:
Código
  1. switch ( (a <= b) * 1 + (b <= c) * 2 + (a <= c) * 4 )
  2. {
  3. case 0:
  4. // caso c - b - a
  5. break;
  6. case 1:
  7. // caso c - a - b
  8. break;
  9. case 2:
  10. // caso b - c - a
  11. break;
  12. case 5:
  13. // caso a - c - b
  14. break;
  15. case 6:
  16. // caso b - a - c
  17. break;
  18. default:
  19. // caso a - b - c
  20. break;
  21. }

Creo que no me he equivocado al transcribir los casos al mensaje; pero me ha funcionnado.
En línea

Arcmonic

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: ordenar 3 valores de menor a mayor
« Respuesta #6 en: 27 Abril 2022, 16:18 pm »

No se si es lo que buscas, pero creo que lo más sencillo es meter las variables en una lista, ordenarla, y luego sacar los valores de la lista.

Si por ejemplo sólo queremos sacar el número máximo, sacamos el valor usando un método de listas.

Código:
a = 3
b = 1
c = 8

# Valores por defecto
print(a, b ,c)

# Metemos los valores en una lista y los ordenamos
lista = [a, b, c]
lista.sort()
print(lista)

# Asignamos nuevas variables
a, b, c = lista

# Comprobamos que se nos han cambiado los valores a como lo queríamos
print(a, b, c)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa en vb (ordenar de mayor a menor)
Programación Visual Basic
jjam45 1 9,549 Último mensaje 19 Febrero 2006, 18:36 pm
por jjam45
Ordenar número de mayor a menor « 1 2 »
Programación Visual Basic
Nessito 14 16,242 Último mensaje 19 Mayo 2007, 20:09 pm
por Nessito
Ordenar valores de menor a mayor en una LisBox
.NET (C#, VB.NET, ASP)
Usuario 202 5 8,873 Último mensaje 16 Junio 2016, 23:42 pm
por Eleкtro
MOVIDO: Ordenar valores de menor a mayor en una LisBox
Programación Visual Basic
Eleкtro 0 1,786 Último mensaje 15 Junio 2016, 00:52 am
por Eleкtro
Ordenar de mayor a menor php/mysqli
PHP
SrTrp 2 3,064 Último mensaje 22 Julio 2017, 20:17 pm
por SrTrp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines