(* * * jmeno: rc * popis: test spravnosti rodneho cisla * level: 1 * * zadani: * Na vstupu je rodne cislo ve tvraru YY MM DD OOOO * (YY rok, MM mesic, DD den, OOOO ocasek). Ukolem je zjistit, * je-li toto cislo korektni. Tedy jestli datum timto rodnym * cislem vyjadrene existuje a jestli je cele cislo delitelne * jedenacti. Predpokladejte, ze dvojcisli 00 znamena rok 2000. * U ostanich roku na tom nezalezi. Program odpovi textem 'ok' * nebo 'ko'. * * input: * jedno zadani na radku, zadani ma tvar: *. Z: YY MM DD OOOO * kde Z je cislo zadani. Posledni zadani ma cislo 0. * * output: *. Z: ok *. Z: ko * * soubory: * rc.pas, rc.out, rc.in * * au: vitas@popelka.ms.mff.cuni.cz * cp: gpl * *) var { cislo zadani } Z: Integer; { dvojtecka } dt: Char; ok: Boolean; y, m, d, o, unor, real_m: Integer; begin repeat read(Z, dt, dt); write(Z, ': '); read(y, m, d, o); ok := True; if (y < 0) or (y > 99) then ok := False; if( m > 50 ) then real_m := m - 50 else real_m := m; if (real_m < 1) or (real_m > 12) then ok := False; if ( y mod 4 ) = 0 then unor := 29 else unor := 28; if d < 1 then ok := False; case real_m of 1, 3, 5, 7, 8, 10, 12: if d > 31 then ok := False; 4, 6, 9, 11: if d > 30 then ok := False; 2: if d > unor then ok := False; end; if ( y + m + d + o ) mod 11 <> 0 then ok := False; if ok then writeln('ok') else writeln('ko'); until Z = 0; end.