26.1. Napisati program za konverziju vrijednosti iz rimskog brojnog sistema u dekadni brojni sistem.
Opis rješenja:
Listing programa:
# 26011450
# RIMSKI BROJ U DEKADNI BROJ
def rimskiDekadni(s:str) ->int:
rimski = { "I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000 }
suma = 0
for i in range(len(s)):
if i + 1 < len(s) and rimski[s[i]] < rimski[s[i + 1]]:
suma -= rimski[s[i]] # lijeva cifra veca od desne oduzimanje
else:
suma += rimski[s[i]] # lijeva cifra veca od desne sabiranje
return suma
print("Dobrodošli u aplikaciju za konverziju rimskih u cjelobrojne brojeve")
rb = input("Ucitaj rimski broj (MDCLXVI): ")
db = rimskiDekadni(rb) # konverzija rimskog u dekadni
print (f'rimski broj {rb} dekadni broj {db}')
Ispis na ekranu:
Dobrodošli u aplikaciju za konverziju rimskih u cjelobrojne brojeve
Ucitaj rimski broj (MDCLXVI): CMCDXCXLIXIV
rimski broj CMCDXCXLIXIV dekadni broj 1443
II varijanta sa provjerom ispravnosti unosa
# 26011450
# RIMSKI BROJ U DEKADNI BROJ
def rimskiDekadni(s:str) ->int:
rimski = { "I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000 }
suma = 0
for i in range(len(s)):
if i + 1 < len(s) and rimski[s[i]] < rimski[s[i + 1]]:
suma -= rimski[s[i]] # lijeva cifra veca od desne oduzimanje
else:
suma += rimski[s[i]] # lijeva cifra veca od desne sabiranje
return suma
def ispravanaCifra(e): # e cifra rimskog broja koji se provjerava
L = ["I", "V", "X", "L", "C", "D", "M"] # sve cifre rimskih brojeva
for i in range(len(L)): # svi iz liste
if e == L[i]: #
return 1 # nasao cifru
return 0 # nema rimske cifre tj. greska u unosu
print("Dobrodošli u aplikaciju za konverziju rimskih u cjelobrojne brojeve")
greska = 0 # pocetna vrijednost greske za start
rb = ''
while greska == 0: # ponavljaj dok je greska; ako je greska ponovu ucitaj R broj
rb = input("Ucitaj rimski broj (MDCLXVI): ")
for i in (range(len(rb)) or greska == 0):
greska = ispravanaCifra(rb[i]) # provjera cifra ucitanog rimskog broja
db = rimskiDekadni(rb) # konverzija rimskog u dekadni
print (f'rimski broj {rb} dekadni broj {db}') # ispis oba broja
Ispis na ekranu:

Index
|
 |