#include #include int preved(char a) { if (a == 'i') { return 1; } else if (a == 'v') { return 5; } else if (a == 'x') { return 10; } else if (a == 'l') { return 50; } else if (a == 'c') { return 100; } else if (a == 'd') { return 500; } else if (a == 'm') { return 1000; } else { return 0; } } int vyries(char* a) { int i; char cisla[10001]; int actual = 0; int hodnota = 0; /*printf("dlzka vstupu a = %d\n", strlen(a));*/ /* if (strlen(a) < 2) { printf("0\n"); return 0; } */ i = 0; while (i < strlen(a)+1) { int j = i+1; while (a[j] == a[i]) { j++; } if (preved(a[i]) < preved(a[j])) { /* zahodime iba ak daky specialny pripad */ /* if (a[i] == 'i' && a[j] == 'v') { cisla[actual] = a[i]; actual++; }*/ if (a[i] == 'i' && a[j] == 'v') { cisla[actual] = a[i]; actual++; } else if (a[i] == 'i' && a[j] == 'x') { cisla[actual] = a[i-1]; actual++; } else if (a[i] == 'x' && a[j] == 'l') { cisla[actual] = a[i]; actual++; } else if (a[i] == 'x' && a[j] == 'c') { cisla[actual] = a[i]; actual++; } else if (a[i] == 'c' && a[j] == 'd') { cisla[actual] = a[i]; actual++; } else if (a[i] == 'c' && a[j] == 'm') { cisla[actual] = a[i]; actual++; } } else { int k; for (k = i; k < j; k++) { cisla[actual] = a[k]; actual++; } } i = j; } cisla[actual] = '\0'; /*printf("dlzka cislo = %d\n", strlen(cisla));*/ i = 0; while (i < strlen(cisla) + 1) { if (preved(cisla[i-1]) < preved(cisla[i])) { if (cisla[i-1] == 'i' && cisla[i] == 'v') { hodnota += 4; i++; } else if (cisla[i-1] == 'i' && cisla[i] == 'x') { hodnota += 9; i++; } else if (cisla[i-1] == 'x' && cisla[i] == 'l') { hodnota += 40; i++; } else if (cisla[i-1] == 'x' && cisla[i] == 'c') { hodnota += 90; i++; } else if (cisla[i-1] == 'c' && cisla[i] == 'd') { hodnota += 400; i++; } else if (cisla[i-1] == 'c' && cisla[i] == 'm') { hodnota += 900; i++; } } else { /* printf("normalne pridava %d\n", preved(cisla[i-1]));*/ hodnota += preved(cisla[i-1]); } i++; } /*cisla[actual] = '\0'; */ /*if (strlen(a) > 1) {*/ /* printf("%s --> %s --> %d\n", a, cisla, hodnota); */ /*}*/ return hodnota; } int main( void ) { while (1) { char cisla[10001]; char a = 'a'; int i = 0; while (a != '\n') { a = getchar(); if (a == EOF) { cisla[i] = '\0'; /* if (cisla[0] == '\0' && cisla[0] != '\n') {*/ /* printf("%d\n",vyries(cisla));*/ /*}*/ return 0; } if (a != '\n') { if (a=='i' || a=='v' || a=='x' || a=='l' || a=='c' || a=='d' || a=='m') { cisla[i] = a; i++; } } } cisla[i] = '\0'; printf("%d\n", vyries(cisla)); } return 0; }