Autor Tema: CU00119A curso bases de programación ordenación de números  (Leído 4537 veces)

userupv

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
hola amigos, estoy leyendo
Parte I: Ejercicio empleando una
estrategia para resolver un
problema de programación.
(CU00119A)
Sección: Cursos
Categoría: Curso Bases de la programación Nivel I
y voy un poco perdido  :o :o :o con el ejemplo puesto. En el paso 1 no entiendo porque es previsto eliminar los valores (?sera para descartarlos porque ya se ha obtenido su orden?), y luego en el paso dos no veo a que numeros se les asigna los ordenes y los valores al decir en el paso anterior que se elimina el v(2).
Ya se que puede ser obvio para algunos de vosotros :D, pero me estoy inciando, espero que me contesten cuanto antes porque sino esto me retendra :D, Gracias
« Última modificación: 05 de Septiembre 2014, 09:39 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:super noob :D, necesito ayuda
« Respuesta #1 en: 16 de Diciembre 2013, 11:28 »
Hola, es normal que te surjan dudas, pero estoy seguro que con la ayuda que te demos y con un poco de paciencia no tendrás problema para comprender cómo resolver estos ejercicios.

Te explico con un poco más de detalle el procedimiento para el ejemplo "Caso 1".

 Caso 1   33   -   88   -   57   -   22   -   15


Vamos a trabajar con dos listas, una lista con los valores iniciales que tenemos, que son v(1) = 33, v(2) = 88, v(3) = 57, v(4) = 22 y v(5) = 15. Estos son los valores originales.

En otra lista vamos a tener los números ordenados, podríamos decir que o(1) será el valor más grande, o(2) el siguiente valor, ... hasta o(5) que será el valor más pequeño, ya que vamos a ordenar de mayor a menor.

Inicialmente la lista de órdenes suponemos que está vacía, o para facilitar las comparaciones, diremos que o(1) = - 9999999 , o(2) = - 9999999, ... o(5) = - 9999999  Esto lo que significa es que la lista de números ordenados no tiene valores asignados, pero como vamos a hacer comparaciones con operadores matemáticos suponemos que los elementos contienen valores muy pequeños de forma que en cualquier comparación que hagamos o(x) va a ser más pequeño que v(x)


 
Paso 1)

Empezamos comparando el valor 1 de la lista original (33) con el orden 1 de la lista de números ordenados (-9999999). v(1) resulta mayor que o(1) porque cualquier número será mayor que o(1). Como v(1) es el mayor número que hemos visto por el momento, decimos que o(1) toma el valor de v(1), es decir o(1) ahora vale 33. Ahora el mayor número que hemos visto está en o(1) y marcamos como previsto para eliminar de la lista original v(1). Si se confirma que v(1) es el mayor valor lo eliminaremos al final, pero si aparece otro número mayor no eliminaremos v(1), sino aquel que resulte mayor. El número que eliminaremos de la lista original será el mayor entre los que queden.
   
v(1) > o(1) ? -> Sí -> o(1) = v(1) ; Previsto eliminar: v(1)
 
Ahora comparamos el valor 2 de la lista original con el mayor número que hemos visto hasta ahora, que está almacenado en o(1) y es 33

   
v(2) > o(1) ? -> Sí -> o(1) = v(2) ; Previsto eliminar: v(2)

v(2) es 88 y resulta mayor que 33, por eso ahora ponemos el mayor número que hemos visto, que es 88, en o(1) y decimos que el número que tenemos previsto eliminar de la lista original es v(2) porque es el mayor entre los números existentes en la lista de v´s.
 
   
v(3) > o(1) ? -> No ya que 57 no es mayor que 88
 
   
v(4) > o(1) ? -> No ya que 22 noes mayor que 88
 
   
v(5) > o(1) ? -> No ya que 15 no es mayor que 88
 
   
o(1) = v(2)        Eliminado v(2)

De forma definitiva o(1) = 88, es decir, el mayor número es 88 y lo guardamos en o(1). A su vez, eliminamos v(2) de la lista de v´s porque ya lo hemos ordenado y no queremos volver a repetir comparaciones con él.

En el paso 2 operamos de la misma manera. La única diferencia es que los valores de v que ya estén eliminados (lo cual significa que ya están ordenados) no los tendremos en cuenta, simplemente indicaremos que ya están ordenados.

En el paso 2 tenemos para ordenar v(1), v(3), v(4) y v(5) ya que v(2) ya ha sido eliminado.

Ahora vamos a buscar el número más grande entre los valores de la lista v actual y asignárselo a o(2). El valor más grande resulta ser 57 que es v(3), por lo que hacemos o(2) = 57 y eliminamos v(3).

El proceso continua hasta que todos los valores v quedan eliminados, y la lista ordenada la tenemos en o(1), o(2), ... o(5).

Intenta hacerlo tú mismo, si tienes problemas en algún paso indica en cuál. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

userupv

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:super noob :D, necesito ayuda
« Respuesta #2 en: 16 de Diciembre 2013, 20:59 »
 ;) muchas gracias Cesar, lo he entendido perfectamente como lo has explicado tu.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:super noob :D, necesito ayuda
« Respuesta #3 en: 17 de Diciembre 2013, 00:41 »
De nada, para eso estamos. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".