Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/05/2007, 22:31
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 2 meses
Puntos: 52
Re: Ayuda con un par de ejercicios basicos

En realidad los ejercicios son muy sencillos. Y pues si son utiles para alguien que aprende.
Te voy a dar una idea para que la apliques.

En el primer ejercicio.

Si tienes un numero de 3 cifras, hay que dividirlo.

El primer numero siempre va a ser ciento-, doscientos-, trescientos-, ... hasta el novecientos.
El segundo número va desde los vigeismos hasta los noventas.
El tercer numero va de cero a nueve.
Y no hay que olvidar el cacho entre diez y diezinueve.

La idea es que crees un 3 arrays con los nombres de cada numero.

char [][]={"ciento", "doscientos"...};

Y asi con ayuda del segundo subindice del arreglo, puedes hacer comparaciones con strcmp(junto con if) para ver que subindice es, le sumas uno y ya te da el numero que es.

Y asi para los demas numeros.

El switch, en este caso serviria mas para hacer el proceso contrario( de numero a letra).

Para el segundo ejercicio, es casi lo mismo.

Tienes algo como

MCMLXXXIX(1989)

Primero lees, esa cadena.
Lo siguiente seria separarla.

M-CM-LXXX-IX
Como?
Practicamente tendrias que leer caracter por caracter y comprobar si el siguiente caracter tiene que ver con el primero.

Por ejemplo.

Tienes una M al principio osea mil.
Para que esta M tenga una "alteracion necesita un numero antes por lo que ésta está sola.
Luego el siguiente caracter es C. La primer ocurrencia seria que fuera un Mil Ciento-algo. Para saber si esto es cierto leemos otro caracter.
Obtenemos la segunda M. Como tuvimos al principio una M y luego una C, lu único que puede significar esta M es mil menos cien. Entonces el numero se convierte en mil novecientos.
Para el 80 es mas sencillo.
Lees la L
ya tienes 195x
Pero para asegurarnos que si sea cincuenta tendremos que leer un maximo de 3 caracteres para saber cuantas X tiene.
Leemos una y pues tenemos 60, luego otra y tenemos 70 y otra para 80.
Podriamos intentar leer otra y darnos cuenta que ya no va a haber otra X, por lo que no es necesario.
Por ultimo Nos encontramos con I. Nos queda 1981.
Pero al intentar leer nuevamente vemos que falta un caracter y que este es otra X. osea 9-1.
Y queda 1989.

Entonces ya tenemos todo separado.
Ahora es solo hacer comparacion con strcmp e ifs para saber a que letra le corresponde cada numero igual que lo hiciste en el primer ejercico.

El chsite del segundo es que analizes todas las reglas de los numero romanos, todas sus posibles combinaciones y todas las alteraciones que una letra sufre ya sea por prefijo o posfijo.

Espero haberte ayudado.

Saludos