namespace Feladat01_Parkoloautomata { internal class Program { static void Main(string[] args) { const int INGYENES_PERC = 15; const int ORADIJ = 400; const int NAPI_MAXIMUM = 2500; Console.WriteLine("=== Parkolóautomata ==="); Console.Write("Érkezés órája (0-23): "); int erkezesOra = int.Parse(Console.ReadLine()); Console.Write("Érkezés perce (0-59): "); int erkezesPerc = int.Parse(Console.ReadLine()); Console.Write("Távozás órája (0-23): "); int tavozasOra = int.Parse(Console.ReadLine()); Console.Write("Távozás perce (0-59): "); int tavozasPerc = int.Parse(Console.ReadLine()); int erkezes = PercekEjfeltol(erkezesOra, erkezesPerc); int tavozas = PercekEjfeltol(tavozasOra, tavozasPerc); if (tavozas <= erkezes) { Console.WriteLine("Hibás adat: a távozás nem lehet korábbi vagy azonos az érkezéssel."); } else { int idotartam = tavozas - erkezes; int orak = idotartam / 60; int percek = idotartam % 60; Console.WriteLine($"Parkolási idő: {orak} óra {percek} perc ({idotartam} perc)"); int megkezdett = MegkezdettOrak(idotartam); int dij = Parkolasidij(idotartam, INGYENES_PERC, ORADIJ, NAPI_MAXIMUM); if (idotartam <= INGYENES_PERC) { Console.WriteLine("A parkolás a türelmi időn belül volt."); } else { Console.WriteLine($"Megkezdett órák száma: {megkezdett}"); } Console.WriteLine($"Fizetendő: {dij} Ft"); if (dij == NAPI_MAXIMUM && megkezdett * ORADIJ > NAPI_MAXIMUM) { Console.WriteLine("A napi maximum lépett életbe."); } } } // Az éjfél óta eltelt percek száma. static int PercekEjfeltol(int ora, int perc) { return ora * 60 + perc; } // Felfelé kerekítés egész órára: minden megkezdett óra egész órának számít. static int MegkezdettOrak(int percek) { int orak = percek / 60; // Ha maradt még töredékperc, az már egy újabb megkezdett óra. if (percek % 60 > 0) { orak++; } return orak; } static int Parkolasidij(int percek, int ingyenesPerc, int oradij, int napiMaximum) { int dij; if (percek <= ingyenesPerc) { dij = 0; } else { dij = MegkezdettOrak(percek) * oradij; if (dij > napiMaximum) { dij = napiMaximum; } } return dij; } } }