Autor
|
Tema: ordenar 3 valores de menor a mayor (Leído 19,881 veces)
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
como ordeno 3 valores de menor a mayor? según la combinatoria de 3,2 me da 6 casos posibles o no se... a = 3 b = 1 c = 8 if a <= b <= c: print(f'{a}, {b}, {c}') elif a <= c <= b: print(f'{a}, {c}, {b}') elif b <= a <= c: print(f'{b}, {a}, {c}') elif b <= c <= a: print(f'{b}, {c}, {a}') elif c <= a <= b: print(f'{c}, {a}, {b}') elif c <= b <= a: print(f'{c}, {b}, {a}') else: print(f'{a}, {b}, {c}')
|
|
|
En línea
|
7w7
|
|
|
Tachikomaia
Desconectado
Mensajes: 1.213
Superhacker (es broma xD )
|
Tal vez esto te ayude: https://foro.elhacker.net/scripting/iquestordenar_turnos_por_velocidad-t511410.0.html;msg2247305#msg2247305pero 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" PlaSp = 1; En1Sp = 1; En2Sp = 10; T1 = "Pla"; T2 = "En1"; T3 = "En2"; if (eval(T1+"Sp") < eval(T2+"Sp")) { saber = eval(T1); T1 = eval(T2); T2 = saber; } if (eval(T2+"Sp") < eval(T3+"Sp")) { saber = eval(T2); T2 = eval(T3); T3 = saber; } if (eval(T1+"Sp") < eval(T2+"Sp")) { saber = eval(T1); T1 = eval(T2); T2 = saber; }
Probabledmente debes hacer:
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
Mensajes: 143
|
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
Mensajes: 1.603
|
Creo que es Python
|
|
|
En línea
|
|
|
|
K-YreX
Desconectado
Mensajes: 1.008
|
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: 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... if (a >= b) { if (b >= c) { // a - b - c } else if (a >= c) { // a - c - b } else { // c - a - b } } else { if (c >= b) { // c - b - a } else if (a >= c) { // b - a - c } else { // b - c - a } }
Y ahí tienes tus 6 combinaciones posibles.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Falo Zipo Pixote
Desconectado
Mensajes: 143
|
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: 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: switch ( (a <= b) * 1 + (b <= c) * 2 + (a <= c) * 4 ) { case 0: // caso c - b - a break; case 1: // caso c - a - b break; case 2: // caso b - c - a break; case 5: // caso a - c - b break; case 6: // caso b - a - c break; default: // caso a - b - c break; }
Creo que no me he equivocado al transcribir los casos al mensaje; pero me ha funcionnado.
|
|
|
En línea
|
|
|
|
Arcmonic
Desconectado
Mensajes: 2
|
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. 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
programa en vb (ordenar de mayor a menor)
Programación Visual Basic
|
jjam45
|
1
|
9,583
|
19 Febrero 2006, 18:36 pm
por jjam45
|
|
|
Ordenar número de mayor a menor
« 1 2 »
Programación Visual Basic
|
Nessito
|
14
|
16,314
|
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,967
|
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,826
|
15 Junio 2016, 00:52 am
por Eleкtro
|
|
|
Ordenar de mayor a menor php/mysqli
PHP
|
SrTrp
|
2
|
3,101
|
22 Julio 2017, 20:17 pm
por SrTrp
|
|