01. FELADAT · FORRÁSKÓD
Parkolóautomata
Program.csAnimáció megnyitása →
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;
}
}
}