Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
7.2 kB
2
Indexable
Never
class Program
{
    static Random random = new Random(); // Создаем генератор случайных чисел

    static string[] drivers = { "Иванов", "Петров", "Сидоров" }; // Создаем массив водителей
    static Dictionary<string, string[]> carModelsByBrand = new Dictionary<string, string[]>() // Создаем словарь, где ключ - марка автомобиля, значение - массив моделей для каждой марки
    {
        { "Toyota", new string[] { "Camry" } }, // Пример: Toyota имеет модель Camry
        { "Honda", new string[] { "Accord" } }, // Пример: Honda имеет модель Accord
        { "Ford", new string[] { "Focus" } }, // Пример: Ford имеет модель Focus
        { "BMW", new string[] { "X5" } }, // Пример: BMW имеет модель X5
        { "Audi", new string[] { "A4" } } // Пример: Audi имеет модель A4
    };

    static string[] carColors = { "Чёрный", "Белый", "Серый", "Синий", "Красный" }; // Создаем массив цветов машин

    static double minPrice = 400; // Устанавливаем минимальную цену поездки
    static double loadNone = 1; // Устанавливаем коэффициент для нулевой загруженности
    static double loadSmall = 1.5; // Устанавливаем коэффициент для малой загруженности
    static double loadMedium = 2; // Устанавливаем коэффициент для средней загруженности
    static double loadHigh = 2.5; // Устанавливаем коэффициент для высокой загруженности
    static double correction = 1.75; // Устанавливаем корректировку для цены

    static void Main(string[] args)
    {
        Console.Write("Откуда: "); // Приглашение ввести место отправления
        string from = Console.ReadLine(); // Считываем место отправления с консоли

        Console.Write("Куда: "); // Приглашение ввести место назначения
        string to = Console.ReadLine(); // Считываем место назначения с консоли

        double distance = random.NextDouble() * 5; // Генерируем случайное расстояние от 0 до 5 км
        double load = GetRandomLoad(); // Получаем случайную загруженность
        double price = CalculatePrice(distance, load); // Вычисляем цену поездки

        string loadText = GetLoadText(load); // Получаем текстовое представление загруженности

        string driver = GetRandomDriver(); // Получаем случайного водителя
        string carBrand = GetRandomCarBrand(); // Получаем случайную марку машины
        string carModel = GetRandomCarModel(carBrand); // Получаем случайную модель машины для данной марки
        string carColor = GetRandomCarColor(); // Получаем случайный цвет машины
        string carNumber = GenerateCarNumber(); // Генерируем случайный гос. номер машины
        int arrivalTime = random.Next(1, 11); // Генерируем время прибытия от 1 до 10 минут


        Console.WriteLine("Ваш заказ принят!"); // Сообщаем о принятии заказа
        Console.WriteLine($"Вы поедете с {from} до {to} расстояние - {distance:F2} км"); // Выводим информацию о расстоянии
        Console.WriteLine($"Сейчас нагруженность - {loadText}"); // Выводим информацию о загруженности
        Console.WriteLine($"Стоимость поездки: {price} тенге"); // Выводим стоимость поездки
        Console.WriteLine($"Ваш водитель: {driver}, {carBrand} {carModel} {carColor} {carNumber} прибудет через {arrivalTime} мин"); // Выводим информацию о водителе и его машине
    }

    static double GetRandomLoad()
    {
        int loadIndex = random.Next(4); // Генерируем случайный индекс для выбора уровня загрузки
        switch (loadIndex)
        {
            case 0: return loadNone; // Нет загрузки
            case 1: return loadSmall; // Малая загрузка
            case 2: return loadMedium; // Средняя загрузка
            case 3: return loadHigh; // Высокая загрузка
            default: return loadNone; // По умолчанию нет загрузки
        }
    }

    static string GetLoadText(double load)
    {
        if (load == loadNone)
            return "нет";
        else if (load == loadSmall)
            return "маленькая";
        else if (load == loadMedium)
            return "средняя";
        else if (load == loadHigh)
            return "большая";
        else
            return "неизвестная";
    }

    static double CalculatePrice(double distance, double load)
    {
        return distance / correction * load * minPrice; // Расчет стоимости поездки
    }

    static string GetRandomDriver()
    {
        return drivers[random.Next(drivers.Length)]; // Выбор случайного водителя из массива
    }

    static string GetRandomCarBrand()
    {
        return carModelsByBrand.Keys.ToArray()[random.Next(carModelsByBrand.Count)]; // Выбор случайной марки машины из словаря
    }

    static string GetRandomCarModel(string carBrand)
    {
        return carModelsByBrand[carBrand][random.Next(carModelsByBrand[carBrand].Length)]; // Выбор случайной модели машины для данной марки из словаря
    }

    static string GetRandomCarColor()
    {
        return carColors[random.Next(carColors.Length)]; // Выбор случайного цвета машины из массива
    }

    static string GenerateCarNumber()
    {
        string letters = "АВЕКМНОРСТУХ";
        string numbers = "0123456789";

        string result = "";
        for (int i = 0; i < 4; i++)
        {
            result += letters[random.Next(letters.Length)]; // Выбор случайных букв для гос. номера
        }
        for (int i = 0; i < 3; i++)
        {
            result += numbers[random.Next(numbers.Length)]; // Выбор случайных цифр для гос. номера
        }

        return result;
    }
}
Leave a Comment