Código de C/Visual C - Conversión de un número romano a decimal en C

Conversión de un número romano a decimal en Cgráfica de visualizaciones


C/Visual C

estrellaestrellaestrellaestrellaestrella(2)
Publicado el 20 de Febrero del 2002 por Lucía Acuña Rey
25.128 visualizaciones desde el 20 de Febrero del 2002. Una media de 35 por semana
Programa mediante el cual insertando un número romano, te hace la conversión a decimal.

Versión 1
estrellaestrellaestrellaestrellaestrella(2)

Publicado el 20 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
25.129 visualizaciones desde el 20 de Febrero del 2002. Una media de 35 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* Programa que pasa los numeros romanos a decimales */
 
/* Numero romanos
   Equivalencias decimales:
   M 1000
   D 500
   C 100
   L 50
   X 10
   V 5
   I 1 */
 
#include<conio.h>
#include<stdio.h>
 
void main()
{
	char romanos[11]={0,0,0,0,0,0,0,0,0,0,0};
	char letras[7]={'M','C','D','L','X','V','I'};
	int numeros[10];
	int cont;
	int num=0;
	clrscr();
	textcolor(9);
	printf("\nPasa de numeros romanos a decimales");
	printf("\n-----------------------------------");
	printf("\n  * Introduce el n. romano (en mayusculas):   ");
	scanf("%10s",&romanos);
	printf("\n");
	for(cont=0;cont<11;cont++)
	{
		switch(romanos[cont])
		{
			case 'M':
				numeros[cont]=1000;
			break;
 
			case 'C':
				numeros[cont]=100;
			break;
 
			case 'D':
				numeros[cont]=500;
			break;
 
			case 'L':
				numeros[cont]=50;
			break;
 
			case 'X':
				numeros[cont]=10;
			break;
 
			case 'V':
				numeros[cont]=5;
			break;
 
			case 'I':
				numeros[cont]=1;
			break;
 
			case 0:
				numeros[cont]=0;
			break;
			default:
			printf("\n Has introducido caracteres invalidos");
			numeros[cont]=0;
			break;
		} /* fin switch */
	} /* fin for */
	for(cont=0;cont<11;cont++)
	{
		if(numeros[cont]<numeros[cont+1])
		{
			numeros[cont]=-numeros[cont];
		}
		if(numeros[cont]>=numeros[cont])
		{
			numeros[cont]=numeros[cont];
		}
	}
	for(cont=0;cont<11;cont++)
	{
		num=num+(numeros[cont]);
	}
	for(cont=0;cont<10;cont++)
	{
		printf("%i\t",numeros[cont]);
	}
	printf("\n");
	printf("\n El numero correspondiente en decimal: ");
	textcolor(9);
	cprintf("%i",num);
	getch();
}



Comentarios sobre la versión: Versión 1 (2)

zar
20 de Marzo del 2002
estrellaestrellaestrellaestrellaestrella
No funciona bien , se cree todo lo que metes. por ejemplo IXM ,que en
numeros romanos esta mal puesto
Responder
Rubén Ruíz Pérez
08 de Junio del 2002
estrellaestrellaestrellaestrellaestrella
El programa falla! por que no valiada las entradas en ningun momento, lo que le falta al programa es e validar cuando por ejemplo son restas( IX = 9 ) y no sumas (como XI = 11). En ambos casos el programa te daria como resultado 11, para hacer un programa asi hace falta una buena cantidad de codigo para valiadar la cadena de entrada!!!

Suerte para la proxima Lucía!!! d;-)
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s110