// Aikoja.cs (c) 2005 Kari Laitinen // http://www.naturalprogramming.com // 2005-01-26 Tiedosto luotu. // 2005-01-26 Viimeisin muutos. using System ; abstract class AikaNyt { protected int tunnit_nyt ; protected int minuutit_nyt ; protected int sekunnit_nyt ; public AikaNyt() { DateTime koneen_aika_nyt = DateTime.Now ; tunnit_nyt = koneen_aika_nyt.Hour ; minuutit_nyt = koneen_aika_nyt.Minute ; sekunnit_nyt = koneen_aika_nyt.Second ; } abstract public void tulosta() ; } // It is not entirely true that the 12-hour a.m./p.m. time // would be used everywhere in America, and the 24-hour time // would be used everywhere in Europe. The names AmerikkalainenAika // and EurooppalainenAika just happen to be nice names to // distinguish these two different ways to display time. class AmerikkalainenAika : AikaNyt { public override void tulosta() { int[] amerikkalaiset_tunnit = { 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } ; Console.Write( amerikkalaiset_tunnit[ tunnit_nyt ] + ":" + minuutit_nyt.ToString( "D2" ) + ":" + sekunnit_nyt.ToString( "D2" ) ) ; if ( tunnit_nyt < 12 ) { Console.Write( " a.m." ) ; } else { Console.Write( " p.m." ) ; } } } class EurooppalainenAika : AikaNyt { public override void tulosta() { Console.Write( tunnit_nyt + ":" + minuutit_nyt.ToString( "D2" ) + ":" + sekunnit_nyt.ToString( "D2" ) ) ; } } class Aikoja { static void Main() { AikaNyt naytettava_aika ; Console.Write( "\n Anna luku 12 nahdaksesi ajan 12-tuntisessa" + "\n a.m./p.m.-formaatissa. Mika tahansa muu luku" + "\n antaa ajan 24 tunnin formaatissa: " ) ; int kayttajan_vastaus = Convert.ToInt32( Console.ReadLine() ) ; if ( kayttajan_vastaus == 12 ) { naytettava_aika = new AmerikkalainenAika() ; } else { naytettava_aika = new EurooppalainenAika() ; } Console.Write( "\n Aika on nyt " ) ; naytettava_aika.tulosta() ; Console.Write( "\n" ) ; } }