Czy do kazdej liczby od 1 do 1000 (bo tyle ich jest w systemie rzymskim) musze budować ifa If(z==1) Cout
Nie, nie musisz. Najprościej sobie rozpisać algorytm konwersji liczb z systemu dziesiętnego na rzymski. To wbrew pozorom nie jest takie trudne, ponieważ tworzenie liczb w systemie rzymskim podlega prostym regułom. Weźmy na przykład liczby od 1 do 10. Będą to odpowiednio: I, II, III, IV, V, VI, VII, VIII, IX, X. Teraz pomyśl o dwóch tablicach
int dec[5] = {1,4,5,9,10};
string rom[5] = {"I","IV","V","IX","X"};
oraz dodawaniu i konkatenacji, by zbudować dowolną liczbę od 1 do 10.
P.S.
Kiedyś napisałem w Pythonie program zmieniający zapis dziesiętny liczby na notację rzymską. Można spróbować zaimplementować ten algorytm w C++:
rzym = {1000:"M", 900:"CM", 500:"D", 400:"CD", 100:"C", 90:"XC", 50:"L", 40:"XL", 10:"X", 9:"IX", 5:"V", 4:"IV", 1:"I"}
x = input("Podaj liczbe calkowita: ")
print "Liczba",`x`,"w notacji rzymskiej to:",
r = rzym.keys()
r.sort()
r.reverse()
lr = ""
for i in r:
while i <= x:
lr += rzym[i]
x -= i
print lr
W takim przypadku zamiast słownika można skorzystać z indeksu do tablic. Na przykład dla powyższych tablic indeks 2 odnosi się do 5 oraz V, które są tożsame.