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

Versión 1
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 20 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
41.326 visualizaciones desde el 20 de Febrero del 2002
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 (3)

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
8 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
AlejandroGY
29 de Septiembre del 2017
estrellaestrellaestrellaestrellaestrella
Esta bien, solo una parte esta mal, para que funcione correctamente hay que inicializar el arreglo numeros; alo asi: int numeros[10] = {0,0,0,0,0,0,0,0,0,0};
Responder

Comentar la versión: Versión 1

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

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s110