Anda di halaman 1dari 6

UNIVERSIDAD ABIERTA Y A DISTANCIA DE

MEXICO

FUNDAMENTOS DE PROGRAMACION

Unidad 3
Evidencia de Aprendizaje
Maria Candelaria Guerrero Ruiz

En un archivo de Word, analiza cuidadosamente el problema planteado,


En el mismo documento, realiza un esbozo del algoritmo en lenguaje natural

Contenido
Unidad 3.............................................................................................................. 2
Evidencia de Aprendizaje:................................................................................ 2
Programa en C. Anlisis del problema..........................................................2
Problema para convertir nmeros enteros a nmeros romanos.....................................3
Planteamiento:.................................................................................................... 3
Consideraciones.................................................................................................... 3
Entrada................................................................................................................. 3
Salida................................................................................................................... 4
Metodologa.......................................................................................................... 4
Esbozo de algoritmo............................................................................................... 4

Unidad 3
Evidencia de Aprendizaje:
Programa en C. Anlisis del problema
Ha llegado la hora de retomar el desarrollo del programa en C que ests
realizando como parte de la Evidencia de Aprendizaje, hasta el momento ya debes
contar con tu problema perfectamente delimitado.
Lo que corresponde para esta unidad es implementar la fase dos del proceso, que
consiste en hacer el anlisis del problema para que en la siguiente unidad se
pueda comenzar el diseo del algoritmo en pseudocdigo o diagrama de flujo.
Realiza lo siguiente:
1) En un archivo de Word, analiza cuidadosamente el problema planteado, para
ello considera:
a. Los datos que se necesitarn como entrada y salida del programa, es
decir, qu necesitar ingresar el usuario, y qu se espera que devuelva
el programa como resultado final.
b. La metodologa que seguirs para resolver el problema, es decir, qu
elementos de programacin necesitar el programa para resolver el
problema. Por ahora no necesitas delimitarlo muy a detalle, ya que
conforme avances en el estudio de las unidades siguientes, aprenders
nuevos elementos que se pueden incorporar al programa. Lo importante
en este punto es que plantees una estructura general que podra servir
para el algoritmo.
2) En el mismo documento, realiza un esbozo del algoritmo en lenguaje natural
(no necesitas hacerlo en diagrama de flujo ni pseudocdigo) para presentar la
estructura general que tendr tentativamente tu programa.
3) Guarda tu trabajo con el nombre FPR_U3_EA_XXYZ.doc y envalo mediante el
Portafolio de evidencias; espera a que tu Facilitador(a) devuelva los

comentarios a tu trabajo, atiende lo que se te indique y haz los ajustes


necesarios para mejorar tu Evidencia.

Problema para convertir nmeros enteros a nmeros


romanos
Planteamiento:
Escribir un programa que convierta un entero positivo en un nmero romano.

Consideraciones
Asuma que los nmeros a convertir son menores a 3500.
Las reglas para construir un nmero romano son las que siguen.
En el sistema de nmeros romanos, i es el smbolo para 1, v para 5, x para 10, l
para 50, c para 100, d para 500 y m para 1000. Los smbolos con un valor grande
usualmente aparecen antes que los smbolos de menor valor.
El valor de un nmero romano es, en general, la suma de los valores de los
smbolos. Por ejemplo, ii es 2, viii es 8. Sin embargo, si un smbolo de menor valor
aparece antes de un smbolo de mayor valor, el valor de los dos smbolos es la
diferencia de los dos valores. Pro ejemplo, iv es 4, ix es 9, y lix es 59.
Note que no hay cuatro smbolos consecutivos iguales. Por ejemplo, iv, pero no iiii,
es el nmero 4.
Nunca use vv para 10, ll para 100, dd para 1000, o vvv para 15, etc.

Entrada
La entrada consistir en una serie de lneas, cada lnea conteniendo un entero x.
Se pedir que se ingrese un nmero entero, representado por la variable x:
Int x; variable de tipo entero con el identificador x.

los valores del arreglo de nmeros


(Vn= 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
los valores del arreglo de constantes
(Vc="m","cm","d","cd","c","xc","l","xl","x","ix","v","iv","i")

Printf(escribir un numero entero entre 1 y 3500, x);

Ejemplo de entrada
38

172

1990

50

Salida
Por cada nmero, imprima el nmero en decimal y en forma romana.
Printf(nmero es: %d,&x);
Ejemplo de Salida
3 ---> iii

8 - viii

1990 -mcmxc

5 -v

172 - clxxii

4 -iv

1990 - mcmxc

Metodologa y esbozo del algoritmo


El problema solicita traducir un nmero menor o igual a 3500 a nmero romano.
La solucin clsica es, dado un nmero N, hacer un bucle mientras N sea mayor a
cero, y dentro de este bucle tener un conjunto de ifs anidados preguntando si el
nmero N es mayor o igual a algn valor.
En lo personal me disgusta utilizar tantos ifs anidados, as que propongo la
siguiente solucin que utiliza un solo if dentro del while. La clave de este algoritmo
est en que recorre un arreglo Vn en donde estn almacenados los posibles

valores de x (N en el ejemplo de arriba), en caso de ser x>=Vn[i] imprime la


cadena correspondiente y decrementa x en Vn[i], caso contrario, incrementa la
variable i para que apunte al siguiente elemento del arreglo Vn.

Ejemplo: Para N en un rango entre 1 y 3500.


1.- El programa debe identificar el nmero decimal con el nmero romano
correspondiente, y deber de presentar como salido ambos nmeros.
Los datos de entrada son x, (nmero entero N),
Llos valores del arreglo (Vn= 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
y los valores del arreglo de constantes (Vc="m","cm","d","cd",
"c","xc","l","xl","x","ix","v","iv","i")
Con estos datos de entrada deber realizar las operaciones del ciclo while,
verificando, las operaciones hasta llegar al nmero decimal ingresado.
La resolucin de este problema ser la salida del nmero decimal con su
respectivo nmero romano.

Anda mungkin juga menyukai