torn24, non credo che quell'algoritmo sia corretto.
Supponi di avere come input semplicemente "X". Abbiamo NumRomano composto in questo modo: ['X', '\0']
La tua prima if è verificata (10 > 0), quindi entro... poi mi ritrovo a confrontare NumRomano[i+2] (che non si sa cosa sia, può valere qualunque cosa) con '\0'... direi di no. 
Questo è più semplice (da destra verso sinistra):
codice:
int len = strlen(NumRomano);
Decimale = ConvertiCifra(NumRomano[len-1]);
for(int i=len-2; i>=0; i--) {
if (ConvertiCifra(NumRomano[i]) >= ConvertiCifra(NumRomano[i+1])) {
Decimale += ConvertiCifra(NumRomano[i]);
} else {
Decimale -= ConvertiCifra(NumRomano[i]);
}
}
E questo è "equivalente", ma gira al contrario:
codice:
int len = strlen(NumRomano);
Decimale = ConvertiCifra(NumRomano[0]);
for(int i=1; i<len; i++) {
if (ConvertiCifra(NumRomano[i]) <= ConvertiCifra(NumRomano[i-1])) {
Decimale += ConvertiCifra(NumRomano[i]);
} else {
Decimale -= ConvertiCifra(NumRomano[i-1]);
Decimale += (ConvertiCifra(NumRomano[i]) - ConvertiCifra(NumRomano[i-1]));
}
}
Ciao.