[C con Clase] Ayuda con programa ... Era: [Windows API] Transformación Afín

Steven Davidson srd4121 en njit.edu
Sab Abr 14 21:43:24 CEST 2012


Hola Jhoana,

On 4/13/2012 1:08 PM, JHOANA TENESACA wrote:
> ayudemen a realizar este programa en c++ programa que permita el
> ingreso de varios numeros enteros y deternime el mas cercano y el mas
> lejano a un valor de referencia previamente ingresado
>

Como no nos dices cuál es el problema exacto que tienes para escribir 
este programa, te doy un análisis para que puedas empezar con este proyecto.

En principio, necesitamos una lista de enteros. Obtenemos estos enteros 
interactuando con el usuario, como dice el enunciado. También leemos y 
guardamos otro número entero que sirve de referencia.

La tarea del programa es determinar la cercanía y lejanía de todos los 
enteros con respecto a este número de referencia. El problema que me 
surge es que no sé exactamente a qué se refiere con cercanía y lejanía. 
Sospecho que se refiere a una comparación numérica y no de posición (en 
la lista). Por ejemplo,

lista := { 1, 5, 7, 10 }
referencia = 3

Observando la lista de enteros, vemos que el más cercano a 3 es 1 y el 
más lejano es 10.

Si tenemos 12 como el entero de referencia, entonces el más cercano y el 
más lejano es el mismo: 10. Asimismo, si consultamos el entero de 
referencia: -5, el más cercano y el más lejano es 1. Esto implica que el 
lejano siempre va a ser o bien el entero menor o el mayor de la lista; 
es decir, los extremos de la lista ordenada.

Por lo tanto, nos interesa consultar la lista para buscar el número más 
cercano. Para realizar esto, nos conviene crear una lista ordenada, así 
que deberíamos ordenar la lista; de menor a mayor, por ejemplo. Para 
obtener el más lejano, podemos deducirlo si comprobamos en qué mitad se 
encuentra el número de referencia. Si está en la primera mitad, entonces 
elegimos el mayor entero como el más lejano, ya que éste se encuentra en 
la segunda mitad; y si el número de referencia se encuentra en la 
segunda mitad, elegimos el menor de la lista como el más lejano, ya que 
éste se encuentra en la primera mitad. Por ejemplo,

lista := { 6, 1, 2, 5, 11, 7, 10, 9 }
referencia = 3

Ordenamos la lista,
lista := { 1, 2, 5, 6, 7, 9, 10, 11 }

y la mediana es: 6

Así que, 3 está en la primera mitad de la lista y por tanto, el entero 
más lejano es 11. Ahora consultamos recorriendo la primera mitad, entre 
1 y 6 en busca del entero más cercano a 3. Vemos rápidamente que 2 es el 
más cercano a 3.


Espero que esto te oriente.

Steven





Más información sobre la lista de distribución Cconclase