(* * * jmeno: * slozenky * * popis: vypise zadane cislo slovy. * level: 2 * * zadani: * Vypiste zadane (nezaporne cele) cislo slovy (bez diakritiky). * Presny tvar bude jasny z prikladu: 1(jedna), 2(dva), 247(dve * ste ctyricet sedm), 1008(tisic osm), 133(sto tricet tri), * 52(padesat dva). Zadane cislo bude mensi nez dest tisic. * * level:2 * * input: * jedno zadani na radku, zadani ma tvar: *. Z: N * kde Z je cislo zadani, N je cislo k precteni * posledni zadani ma cislo 0. * * output: *. Z: [zadane cislo slovy] * * soubory: * slozenky.pas, slozenky.out, slozenky.in * * au: vitas@popelka.ms.mff.cuni.cz * cp: gpl * *) var { cislo zadani } Z: Integer; { dvojtecka } dt: Char; N: Integer; Mez: string; procedure tisice(var N:Integer); begin case N div 1000 of 1: write(' tisic'); 2: write(' dva tisice'); 3: write(' tri tisice'); 4: write(' ctyri tisice'); 5: write(' pet tisic'); 6: write(' sest tisic'); 7: write(' sedm tisic'); 8: write(' osm tisic'); 9: write(' devet tisic'); end; N := N mod 1000; end; procedure stovky(var N:Integer); begin case N div 100 of 1: write(' sto'); 2: write(' dve ste'); 3: write(' tri sta'); 4: write(' ctyri sta'); 5: write(' pet set'); 6: write(' sest set'); 7: write(' sedm set'); 8: write(' osm set'); 9: write(' devet set'); end; N := N mod 100; end; procedure desitky(var N:Integer); begin case N div 10 of 2: write(' dvacet'); 3: write(' tricet'); 4: write(' ctyricet'); 5: write(' padesat'); 6: write(' sedesat'); 7: write(' sedmdesat'); 8: write(' osmdesat'); 9: write(' devadesat'); end; if N >= 20 then N := N mod 10; end; procedure jednotky(var N:Integer); begin case N of 1: write(' jedna'); 2: write(' dve'); 3: write(' tri'); 4: write(' ctyri'); 5: write(' pet'); 6: write(' sest'); 7: write(' sedm'); 8: write(' osm'); 9: write(' devet'); 10: write(' deset'); 11: write(' jedenact'); 12: write(' dvanact'); 13: write(' trinact'); 14: write(' ctrnact'); 15: write(' patnact'); 16: write(' sestnact'); 17: write(' sedmnact'); 18: write(' osmnact'); 19: write(' devatenact'); end; end; begin repeat read(Z, dt, dt, N); write(Z, ':'); if N = 0 then writeln(' nula') else begin tisice(N); stovky(N); desitky(N); jednotky(N); writeln; end; until Z = 0; end.