/*

    Rimski broj u arapski broj.


    http://www.periodni.com/hr/pretvaranje_rimskih_brojeva.html
    https://bs.wikipedia.org/wiki/Rimski_brojevi
    http://www.mef.unizg.hr/~mtaradi/nastava/ostalo/preracun/skripte/rim_arap.htm
    http://gwydir.demon.co.uk/jo/numbers/roman/index.htm
    https://www.google.rs/search?q=convert+to+roman+numerals+c+code&gws_rd=cr&ei=m8OWWc6FFsjeUYvmjfAE
    https://stackoverflow.com/questions/23269143/c-program-that-converts-numbers-to-roman-numerals
    https://www.google.rs/search?q=algoritam+za+arapski+u+rimski+broj&rlz=1C1VFKB_enRS696RS704&oq=algoritam+za+arapski+u+rimski+broj&aqs=chrome..69i57.7216j0j7&sourceid=chrome&ie=UTF-8
    http://www.cquestions.com/2011/08/c-program-to-convert-roman-number-to.html


    Napisati funkciju koja za uneti rimski broj prikazuje odgovarajuci arapski broj.

    Podsecanja radi, nize su date tabele sa rimskim ciframa:

    I   V   X   L   C   D   M
    1   5   10  50  100 500 1000

    IV  IX  XL  XC  CD  CM
    4   9   40  90  400 900

    Testni primer:

    2736 = MMDCCXXXVI

    tj. razdvojeno:

           2  7   3   6
    2736 = MM DCC XXX VI

           3   4  4   4
    3444 = MMM CD XL  IV

           3   9  9   9
    3999 = MMM CM XC  IX

MDCCCLXXXVIII = 1000 + 500 + 100 + 100 + 100 + 50 + 10 + 10 + 10 + 5 + 1 + 1 + 1 = 1888

Ako je vrednost leve znamenke manja od desne,
onda se vrednost leve znamenke oduzima od vrednosti desne.

MCMXCIX = M CM XC IX or 1000 + (1000 - 100) + (100 - 10) + (10 - 1) = 1999

MCMXCIX = M CM XC IX or 1000 - 100 + 1000 - 10 + 100 - 1 + 10 = 1999


    I   V   X   L   C   D   M
    1   5   10  50  100 500 1000


    Cifra hiljada: broj M-ova na pocetku * 1000 je broj hiljada.

    0       1000        2000        3000    4000    5000    ...     11000
    0       1           2           3       4       5       ...     11
            M           MM          MMM     MMMM    MMMMM           MMMMMMMMMMM

    Cifra stotina:     <4 , =4 , >4

    0       100     200     300     400     500     600     700     800     900
    0       1       2       3       4       5       6       7       8       9
            C       CC      CCC     CD      D       DC      DCC     DCCC    CM


    Cifra desetica:     <4 , =4 , >4

    0       10      20      30      40      50      60      70      80      90
    0       1       2       3       4       5       6       7       8       9
            X       XX      XXX     XL      L       LX      LXX     LXXX    XC


    Cifra jedinica:     <4 , =4 , >4

    0       1       2       3       4       5       6       7       8       9
            I       II      III     IV      V       VI      VII     VIII    IX


*/

#include <stdio.h>
#include <string.h>

int vratiZnak(char string[], int i) {
    int znak = 1;
    if (string[i] == 'I' && (string[i + 1] == 'V' || string[i + 1] == 'X'))
        znak = -1;
    if (string[i] == 'X' && (string[i + 1] == 'L' || string[i + 1] == 'C'))
        znak = -1;
    if (string[i] == 'C' && (string[i + 1] == 'D' || string[i + 1] == 'M'))
        znak = -1;
    return znak;
}

int vratiCifru(char c) {
    int cifra;
    switch (c) {
        case 'I': cifra = 1;
            break;
        case 'V': cifra = 5;
            break;
        case 'X': cifra = 10;
            break;
        case 'L': cifra = 50;
            break;
        case 'C': cifra = 100;
            break;
        case 'D': cifra = 500;
            break;
        case 'M': cifra = 1000;
            break;
        default: cifra = 0;
            break;
    }
    return cifra;
}

int vratiArapskiBroj(char rimski[]) {
    int i, broj = 0;
    for (i = 0; i < strlen(rimski); i++) {
        broj += vratiZnak(rimski, i) * vratiCifru(rimski[i]);
    }
    return broj;
}

int main(void) {

    int arapski;
    char rimski[100];

    strcpy(rimski,"MMDCCXXXVI");

    printf("\n Rimski u arapski \n");
    arapski = vratiArapskiBroj(rimski);
    printf("\n %s = %d \n", rimski, arapski );

    return 0;
}