Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con un par de ejercicios basicos

Estas en el tema de Ayuda con un par de ejercicios basicos en el foro de C/C++ en Foros del Web. Hola a todos, bueno me he quedado sin hacer estos 2 ejercicios de programacion en C, haber si me pueden ayudar. El primero: Tengo que ...
  #1 (permalink)  
Antiguo 20/05/2007, 11:11
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años
Puntos: 0
Ayuda con un par de ejercicios basicos

Hola a todos, bueno me he quedado sin hacer estos 2 ejercicios de programacion en C, haber si me pueden ayudar.
El primero:
Tengo que introducir por el teclado un numero en letras,y el programa tiene que vizulizarmelo en numeros, el numero ingresado tiene que ser de 3 digitos, y solo se pueden utilizar las sentencias If y Switch, que es lo que te da el libro hasta esos ejercicios.
Ejm entrada:
docientos veinticinco
Ejm salida:
225.
Una cosa mas el ejercico dice que la entrada debe terminar en punto.
Me pregunto si se puede hacer con el define que cada palabra tome un valor numerico y que ese valor dado se vizualice a la salida.De ahi se me ocurre hacer con el switch cada uno de los casos posibles, pero por el veinticinco unido envez de veinti cinco, me daria un total de cerca de 100 combinaciones, definitivamente no es la respuesta mas inteligente...

El segundo es un programa que acepta una año escrito en numeros romanos y lo transforma a numeros decimales en un rango del 1000 al 2000.
Ejm de entrada:
MCMLXXXIX
Ejm de salida:
1989.
Para recordar I=1 V=5 X=10 L=50 C= 100 D=500 M=100,
aqui si no tengo ni idea como hacerlo sin un bucle, para restar I de X en el caso de IX=9 igualmente solo con If y con Switch.

Aver si me pueden ayudar con la idea de como hacerlo.
Gracias.
Saludos.
  #2 (permalink)  
Antiguo 20/05/2007, 22:31
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:43.