using System.Net; namespace Lab1.App { class Car { private string _brand; private string _model; private int _doorCount; private float _engineVolume; private double _avgConsump; private static int _carCount = 0; private string _registrationNumber;//pola public string Brand { get { return _brand; } set { _brand = value; } } public string Model { get { return _model; } set { _model = value; } } public int DoorCount { get { return _doorCount; } set { _doorCount = value; } } public float EngineVolume { get { return _engineVolume; } set{ _engineVolume = value; } } public double AvgConsump { get { return _avgConsump; } set { _avgConsump = value; } } public string RegistrationNumber { get { return _registrationNumber; } set { _registrationNumber = value; } }//wlasciwosci public Car()//konstruktor domyslny { _brand = "none"; _model = "none"; _doorCount = 0; _engineVolume = 0; _avgConsump = 0; _carCount++; } public Car(string brand, string model, int doorCount, float engineVolume, double avgConsumpt)//konstruktor parametryczny { _brand = brand; _model = model; _doorCount = doorCount; _engineVolume = engineVolume; _avgConsump = avgConsumpt; _carCount++; } public double CalculateConsump(double roadLength) { return AvgConsump * roadLength / 100.0; } public double CalculateCost(double roadLength, double petrolCost) { return CalculateConsump(roadLength) * petrolCost; } public override string ToString()//nadpisanie tostring { return $"Car | Brand: {_brand}, Model: {_model}, NumOfDoors:{ _doorCount}, EngineVol: { _engineVolume}, AvgConsump:{ _avgConsump}"; } public void Details() { Console.WriteLine(ToString()); } public static void DisplayCarCount() { Console.WriteLine(_carCount); } } class Garage { private string _adress; private int _carsCount = 0; private int _capacity; private Car[] _cars;//pola public string Adress { get { return _adress; } set { _adress = value; } } public int Capacity { get { return _capacity; } set { _capacity = value; _cars = new Car[value];//tworzenie tablicy } } public Garage() { _adress = "none"; _capacity = 0; _cars = null;//new Car[0] } public Garage(string adress, int capacity) { _adress = adress; _capacity = capacity; _cars = new Car[capacity]; } public void CarIn(Car car) { if (_carsCount == Capacity) { Console.WriteLine("Full Garage"); } else { _carsCount++; _cars[_carsCount - 1] = car; } } public Car CarOut() { if (_carsCount == 0) { Console.WriteLine("Empty Garage"); return new Car(); } else { Car carA = _cars[_carsCount - 1]; _cars[_carsCount - 1] = null; _carsCount--; return carA; } } public override string ToString() { string marson = $"Garage Adress: {_adress}, Capacity: {_capacity}, cars count: {_carsCount}\n"; foreach (Car car in _cars) { if (car != null) { marson += car.ToString() + "\n"; } } return marson; } public void Details() { Console.WriteLine(ToString()); } } class Person { private string[] _registrationNumbers = new string[3]; public static int MaxCarCount = 3; public string FirstName { get; set; } public string LastName { get; set; } public string AddressName { get; set; } public int CarsCount { get; set; } public Person() { FirstName = " "; LastName = " "; AddressName = " "; CarsCount = 0; } public Person(string firstName, string lastName, string address) { FirstName = firstName; LastName = lastName; AddressName = address; CarsCount= 0; } public Person(string firstName, string lastName, string address, Car[] cars) { FirstName = firstName; LastName = lastName; AddressName = address; CarsCount = 0; foreach (Car car in cars) { _registrationNumbers[CarsCount] = car.RegistrationNumber; CarsCount++; } } public void AddCarRegistrationNumber(string registrationNumber) { if (CarsCount < MaxCarCount) { _registrationNumbers[CarsCount] = registrationNumber; CarsCount++; } else Console.WriteLine("Osoba nie może posiadać więcej aut"); } public void RemoveCarRegistrationNumber(string registrationNumber) { if (CarsCount == 0) Console.WriteLine("Brak aut"); else { for (int i = 0; i < MaxCarCount; i++) { if (_registrationNumbers[i] == registrationNumber) { for (int j = i; j < CarsCount - 1; j++) { _registrationNumbers[j] = _registrationNumbers[j + 1]; } _registrationNumbers[i] = null; CarsCount--; } } } } public override string ToString() { string nosram = $"Person | First Name: {FirstName}, Last Name: {LastName}, Address: {AddressName}\n"; for (int i = 0; i < CarsCount; i++) { nosram += _registrationNumbers[i] + "\n"; } return nosram; } public void Details() { Console.WriteLine(ToString()); } } internal class Program { static void Main(string[] args) { Car car1 = new Car(); car1.Details(); car1.Brand = "Fiat"; car1.Model = "126p"; car1.DoorCount = 2; car1.EngineVolume = 650; car1.AvgConsump = 6.0; car1.Details(); Car car2 = new Car("Syrena", "105", 2, 0.8f, 7.6d); car2.Details(); Console.WriteLine(car1); double routeConsumption = car2.CalculateConsump(500); Console.WriteLine($"Route consumption: {routeConsumption} l"); double routeCost = car2.CalculateCost(500, 5); Console.WriteLine($"Route cost: {routeCost}"); Car.DisplayCarCount(); Console.WriteLine("\r\n=========================================\r\n"); Garage garage1 = new Garage(); garage1.Adress = "ul. Garażowa 1"; garage1.Capacity = 1; Garage garage2 = new Garage("ul. Garażowa 2", 2); garage1.CarIn(car1); garage1.Details(); garage1.CarIn(car2); garage2.CarIn(car2); var movedCar = garage1.CarOut(); garage2.CarIn(movedCar); garage2.Details(); garage1.Details(); garage2.CarOut(); garage2.Details(); garage2.CarOut(); garage2.CarOut(); garage2.Details(); garage1.Details(); Console.WriteLine("\r\n=========================================\r\n"); Person p1 = new Person("Maciej", "Kurek", "Żarki"); p1.Details(); Car[] cars1 = new Car[2]; cars1[0] = car1; cars1[1] = car2; Person p2 = new Person("Piotr", "Metalowiec", "Wodzisław Śląski", cars1); p2.Details(); p2.AddCarRegistrationNumber("SMY324"); p2.Details(); p2.AddCarRegistrationNumber("SMY324"); p2.Details(); p2.RemoveCarRegistrationNumber("SMY324"); p2.Details(); p2.AddCarRegistrationNumber("SMY324"); p2.RemoveCarRegistrationNumber("SMY555"); p2.Details(); p2.AddCarRegistrationNumber("SMY324"); p2.Details(); } } }