Autor
|
Tema: igualar todos los numeros dentro del array - Ejercicio Java (Leído 7,654 veces)
|
shishioku
Desconectado
Mensajes: 4
|
Hola tengo este ejercicio que me cuesta resolver, si alguien puede lograrlo, me gustaría saber como lo resolvió.
hay que codear la función " iterationsToEquality(array of integer) el cual retornara un int que sera la cantidad mínima de iteraciones para lograr igualar el valor de todos los números del array. para lograrlo tenes que suman 1 a cada elemento del array, excepto al de mas valor, esto por cada iteracion , si hay 2 elementos con el mismo valor (los 2 mas altos) considerar solo 1 como tal . array {1.3.3}
deberían quedar todos en 5,5,5.
|
|
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
Sumale 1 a todos los elementos del array menos al mayor. Solo tienes que comprobar el mayor numero y sumarle 1 a todos los elementos que no valgan lo mismo. Despues compruebas el menor al final de cada iteración. Si todos valen lo mismo sales del bucle. Pon una variable a 0 y la usas de contador sumandole +1 en el bucle. Asi por cada iteracion se le suma uno.
Al salir del bucle retornas la variable.
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
Serapis
|
El ejecrcicio, parece más bien diseñado para demostrar si una persona piensa por sí misma o simplemente se pone con la fuerza bruta a resolver el problema sin pararse a pensar un poco. Veamos sea un array de 5 valores, y estos en concreto: 9, 15, 11, 19, 12 Claramente se vé que para que todos alcancan el valor 19, que es el más alto, bastarán 19-9 = 10 iteraciones, pués es la diferencia entre el menor y el mayor en el array. 9--> 10, 11,12,13,14,15,16,17,18-->19 ...por tanto el problema se limita a recorrer en 2 bucles para llegar a la solución: --- 1ª vez, para encontrar el mayor y menor elementos en el array --- después se realiza la resta: maxIteraciones = ValorMaximo - ValorMinimo Maxiteraciones es el valor a devolver... --- 2ª vez, por su parte un segundo recorrido en el array (si se reclama), pone todo el array con el valor máximo: Para k desde 0 hasta array.length -1 array(k) = valormaximo siguiente
Este bucle por tanto optimiza la pérdida de eficiencia de sumar 1 a cada ítem en el array, excepto al mayor encontrado... pués hacerlo de forma ineficiente exigiría 2 bucles anidados...
Me edito antes de enviar... al releer, veo que si el array de entrada contiene 1,3,3 y la salida 5,5,5 es claro que incluso al valor mayor se le suma la diferencia (aunque esto contadice lo que la prosa describe)... Como hay cierta ambigüedad entre lo que se dice en prosa y lo que s emuestra de ejemplo, no cambio nada previo, si señalo que resuleto el caso que sea, si procede... luego pensando solo un poco más puedes modificar lo antedicho para lograr tu objetivo...
|
|
« Última modificación: 9 Julio 2019, 17:51 pm por NEBIRE »
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
NEBIRE el problema indica los pasos a seguir, no que lo resuelvas de una forma más eficiente. Dice explicitamente sumar +1 por cada iteración. A mi el ejercicio me parece diseňado para practicar el manejo de bucles, funciones, arrays, contadores y condicionales. T
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
Serapis
|
Lo que se pide, no tiene porqué hacerse como se dice.
Este es precisamente un caso, donde se presta con suma facilidad a que el alumno demuestre entender y poner en práctica sus conocimientos.
Para hacer las cosas maquinalmente se construyeron las máquinas, las personas tienen (y deben usar) la capacidad de improvisar si supone mejoras (y sigue cumpliendo el objetivo final).
En fin, la diferencia entre el alumno que memoriza y el que aplica el conocimiento adquirido tiene aquí su ejemplo. El alumno que se conforme con 'repetir' como un loro lo que le han dicho, será el profesioal desechable en su puesto de trabajo en el futuro... Esta profesión (en toda su amplitud) requiere la capacidad de improvisar, de mejorar constantemente, no de conformarse y un profesor tiene la obligación de alentar esa cualidad.
...los bucles, arrays, funciones... no por ello dejan de ser ejercitados, se requieren igualmente.
|
|
|
En línea
|
|
|
|
shishioku
Desconectado
Mensajes: 4
|
"Veamos sea un array de 5 valores, y estos en concreto: 9, 15, 11, 19, 12 Claramente se vé que para que todos alcancan el valor 19, que es el más alto, bastarán 19-9 = 10 iteraciones," Son 16 iteraciones , por que cuando lleguen 2 valores a 19, tiene que tomar 1 para subirlo, por lo cual subirán todos e incluso un 19, ese 19 quedara en 20 y así sucesivamente hasta que queden todos en 25.
|
|
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
Tienes razón. El planteamiento es el mismo que plantee cambiando los números e valgan lo mismo por unicamente tomar el mayor como dices.
No me fijé en el ejemplobque pusiste al final del programa disculpa.
|
|
« Última modificación: 11 Julio 2019, 03:37 am por string Manolo »
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
shishioku
Desconectado
Mensajes: 4
|
Ya lo puse resolver Gente! gracias igual. Me enrosco mucho en cosas super dificiles y resulto ser una boludez.
public static int iterationToEquiality(int[] array){ int variable=0; int countA = 0; ArrayList<Integer> lista = new ArrayList<>(); for (int i = 0; i < array.length-1; i++) { variable = array; for (int j = 0; j < array.length-1; j++) { if (variable == array[j]) { lista.add(j); countA++; } if (variable != array[j]) { lista.add(j); countA++; } lista.get(j).equals(j); } } return countA; }
|
|
|
En línea
|
|
|
|
MinusFour
|
Si te entendi correctamente, si tuvieras tres numeros:
1, 1, 0
Entonces haría:
1, 2, 1 2, 2, 2
Y Si tuvieras:
1, 1, 1, 0
Entonces haría:
1, 2, 2, 1 2, 2, 3, 2 3, 3, 3, 3
Si es así, el número mas alto que estás buscando de 19, 15, 12, 11, 9 no es 25 sino 30. Y te tomaría 21 iteraciones.
|
|
|
En línea
|
|
|
|
shishioku
Desconectado
Mensajes: 4
|
Si te entendi correctamente, si tuvieras tres numeros:
1, 1, 0
Entonces haría:
1, 2, 1 2, 2, 2
Y Si tuvieras:
1, 1, 1, 0
Entonces haría:
1, 2, 2, 1 2, 2, 3, 2 3, 3, 3, 3
Si es así, el número mas alto que estás buscando de 19, 15, 12, 11, 9 no es 25 sino 30. Y te tomaría 21 iteraciones.
19 16 13 12 10 19 17 14 13 11 19 18 15 14 12 19 19 16 15 13 20 19 17 16 14 20 20 18 17 15 21 20 19 18 16 21 21 20 19 17 22 21 21 20 18 22 22 22 21 19 23 22 22 22 20 23 23 23 23 21 24 23 23 23 22 24 24 24 24 23 25 24 24 24 24 25 25 25 25 25
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda! ejercicio con array! :-\
Java
|
emuraydem
|
4
|
3,167
|
20 Julio 2010, 08:54 am
por Gallu
|
|
|
Array que lea ciertos números
Programación C/C++
|
DickGumshoe
|
2
|
2,405
|
15 Enero 2012, 01:18 am
por DickGumshoe
|
|
|
[java]Reconocimiento de números primos en array
Java
|
Wick3D
|
3
|
8,801
|
26 Diciembre 2016, 16:59 pm
por kingcreek
|
|
|
Hola a todos!! Ayuda con ejercicio Java
Java
|
luanitax
|
1
|
2,942
|
9 Septiembre 2021, 04:00 am
por MCKSys Argentina
|
|
|
MOVIDO: Hola a todos!! Ayuda con ejercicio Java
Programación General
|
MCKSys Argentina
|
0
|
2,225
|
9 Septiembre 2021, 03:41 am
por MCKSys Argentina
|
|