(* * * jmeno: ara2rim * popis: pcevod arabskych cisel na rimska * level: 3 * * zadani: * Prevedte arabske cislo na cislo rimske. * Pouzijte tzv. moderni zapis * rimskych cisel, ktery nedovoluje nejednoznacnosti. Viz * nasledujici priklady: 1 -> i, 4 -> iv, 8 -> viii, 10 -> x, 50 * -> l, 100 -> c, 500 -> l, 1000 -> m, 49 -> xlix, 1999 -> * mcmxcix. * * input: * jedno zadani na radku, zadani ma tvar: *. Z: N * kde Z je cislo zadani, N je arabske cislo, prirozene mensi * nez 4000. Pokud je N nula program vytiskne '-'. * posledni zadani ma cislo 0. * * output: *. Z: rim(N) * * soubory: * ara2rim.pas, ara2rim.out, ara2rim.in * * au: vitas@popelka.ms.mff.cuni.cz * cp: gpl * *) var { cislo zadani } Z: Integer; { dvojtecka } dt: Char; A: Integer; procedure tisice(var N: Integer); begin case N div 1000 of 1: write('m'); 2: write('mm'); 3: write('mmm'); end; N := N mod 1000; end; procedure stovky(var N: Integer); begin case N div 100 of 1: write('c'); 2: write('cc'); 3: write('ccc'); 4: write('cd'); 5: write('d'); 6: write('dc'); 7: write('dcc'); 8: write('dccc'); 9: write('cm'); end; N := N mod 100; end; procedure desitky(var N: Integer); begin case N div 10 of 1: write('x'); 2: write('xx'); 3: write('xxx'); 4: write('xl'); 5: write('l'); 6: write('lx'); 7: write('lxx'); 8: write('lxxx'); 9: write('xc'); end; N := N mod 10; end; procedure jednotky(var N: Integer); begin case N of 1: write('i'); 2: write('ii'); 3: write('iii'); 4: write('iv'); 5: write('v'); 6: write('vi'); 7: write('vii'); 8: write('viii'); 9: write('ix'); end; end; begin repeat read(Z, dt, dt, A); write(Z, ': '); if A = 0 then writeln('-') else begin tisice(A); stovky(A); desitky(A); jednotky(A); writeln; end; until Z = 0; end.