using System; class VecitiKalendar { // Da li je godina g prestupna? static bool Prestupna(int g) { return g % 400 == 0 || g % 100 != 0 && g % 4 == 0; } // Broj dana u mesecu m godine g static int BrojDana(int m, int g) { if(m == 2) { if(Prestupna(g)) { return 29; } else { return 28; } } else if(m == 4 || m == 6 || m == 9 || m == 11) { return 30; } else { return 31; } } // Za 1. dan meseca m godine g odredjujemo koji je to dan // u nedelji: 0 = nedelja, 1 = ponedeljak, ..., 6 = subota static int PrviDan(int m, int g) { int v = g / 100; int f = 0; if(Prestupna(g) && (m == 1 || m == 2)) { f = 1; } int k; if(m == 8) { k = 0; } else if(m == 5) { k = 6; } else if(m == 6) { k = 2; } else if(m == 9 || m == 12) { k = 3; } else if(m == 4 || m == 7) { k = 4; } else if(m == 1 || m == 10) { k = 5; } else { k = 1; } return (1 + k + g + g/4 - 2 * (v % 4) - f) % 7; } // Metod ispisuje tabelicu koja predstavlja kalendar za mesec // koji ima n dana i ciji prvi dan je nedelja ako je d = 0, // ponedeljak ako je d = 1, ..., subota ako je d = 6 static void IspisiMesec(int d, int n) { int i; Console.WriteLine(" ne po ut sr ce pe su"); for(i = 0; i < d; i++) { Console.Write(" "); } for(i = 1; i <= n; i++) { if(i <= 9) { Console.Write(" "); } else { Console.Write(" "); } Console.Write(i); if((i + d) % 7 == 0) { Console.WriteLine(); } } Console.WriteLine(); } // Glavni program samo ucita podatke, proveri da li // su smisleni i onda poziva metod IspisiMesec static void Main() { Console.Write("mesec: "); int m = int.Parse(Console.ReadLine()); Console.Write("godina: "); int g = int.Parse(Console.ReadLine()); if(!(1 <= m && m <= 12 && g >= 1583)) { Console.WriteLine("Mesec i godina nisu korektni"); } else { int d = PrviDan(m, g); int n = BrojDana(m, g); IspisiMesec(d, n); } } }