/*Märgi kordamine tähendab liitmist (näiteks III = 1 + 1 + 1 = 3, XX = 10 + 10 = 20);
/*Märgi kordamine tähendab liitmist (näiteks III = 1 + 1 + 1 = 3, XX = 10 + 10 = 20);
väiksema numbri järgnemine suuremale tähendab liitmist, (näiteks VI = 5 + 1 = 6, CLV = 100 + 50 + 5 = 155); üksteisele võib järgneda kuni kolm ühesugust märki (näiteks mitte IIII, vaid IV);
väiksema numbri eelnemine suuremale tähendab, et ta tuleb suuremast lahutada (näiteks IV = 5 – 1 = 4, CM = 1000 – 100 = 900); eelneda võib ainult üks märk (näiteks 80 ei kirjutata mitte XXC, vaid LXXX);
märk I võib seista ainult märkide V ja X ees, märk X märkide L ja C ees ning märk C märkide D ja M ees (näiteks 99 kirjutatakse XCIX, mitte IC);
Rooma numbritel põhinevas arvusüsteemis puudub vajadus ja võimalus nulli märkimiseks.*/
#include<stdio.h>
#include<string.h>
int arvud(char);
int main(){
char rooma_number[1000];
int i=0;
long int number =0;
printf("Rooma numbrite sisestamiseks võite kasutada suuri ja vaikeseid tahti \n");
printf("Sisesta Rooma numbrid (Kehtivad numbrid on I, V, X, L, C, D, M): \n");//Võtke sisendiks rooma number ja salvestage see massiivi rooma_number
scanf("%s",rooma_number);
while(rooma_number[i]){ // Kasutades while loopi annab see juurdepääsu sisendarvu igale numbrile
if(arvud(rooma_number[i]) < 0){
printf("Kehtetu Rooma number : %c\n",rooma_number[i]);//Kõigepealt kontrollige, kas praeguse rooma numbri väärtus on väiksem kui null. Kui see on nii, printige väljund kui „Kehtetu rooma number”.
return 0;
}
if((strlen(rooma_number) -i) > 2){
if(arvud(rooma_number[i]) < arvud(rooma_number[i+2])){ //Kui ei, siis kontrollige, kas praeguse rooma numbri väärtus on suurem või võrdne selle järgmise numbri väärtusega. Kui see on nii, suurendage muutuja arvu praeguse rooma numbri väärtusega.
number = number + (arvud(rooma_number[i+1]) - arvud(rooma_number[i]));//Lahutage praeguse rooma numbri väärtus selle järgmise rooma numbri väärtusest ja suurendage muutuvat numbrit saadud väärtusega.
i++;
}
i++;
}
printf("Selle kymnendväärtus on : %ld\n",number);
return 0;
}
int arvud(char c){ //Funktsioonis arvud() määratlen switch avalduses oleva rooma numbri iga numbri väärtus ja tagastan õige väärtuse