Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Тормозной калькулятор, математика, формула, для c#

Plzloveme Знаток (408), на голосовании 6 месяцев назад
Нужна формула для расчета тормозного пути. Для расчёта использовать:скорость, вид транспортного средства (мопед, мотоцикл, легковой автомобиль, грузовой автомобиль или автобус, весом до 12 тонн или свыше), вид дорожного покрытия (сухой асфальт, обледенение и т.п), время восприятия опасности водителем, время реакции водителя, уклон дороги и направление движения в случае уклона
Голосование за лучший ответ
qwertyplo Мастер (1637) 7 месяцев назад
 using System; 

class Program
{
static void Main(string[] args)
{
// Запрашиваем у пользователя данные для расчета тормозного пути
Console.WriteLine("Введите скорость транспортного средства (км/ч):");
double speed = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Выберите вид транспортного средства:\n" +
"1. Мопед\n" +
"2. Мотоцикл\n" +
"3. Легковой автомобиль\n" +
"4. Грузовой автомобиль до 12 тонн\n" +
"5. Грузовой автомобиль свыше 12 тонн или автобус");
int vehicleType = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Выберите вид дорожного покрытия:\n" +
"1. Сухой асфальт\n" +
"2. Обледенение\n" +
"3. Дождь");
int roadCondition = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Введите время восприятия опасности водителем (секунды):");
double perceptionTime = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Введите время реакции водителя (секунды):");
double reactionTime = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Введите уклон дороги (%):");
double slope = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Выберите направление движения в случае уклона:\n" +
"1. Вверх\n" +
"2. Вниз");
int slopeDirection = Convert.ToInt32(Console.ReadLine());

// Рассчитываем тормозной путь
double brakingDistance = CalculateBrakingDistance(speed, vehicleType, roadCondition, perceptionTime, reactionTime, slope, slopeDirection);

// Выводим результат
Console.WriteLine($"Тормозной путь: {brakingDistance} метров");

Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey();
}

static double CalculateBrakingDistance(double speed, int vehicleType, int roadCondition, double perceptionTime, double reactionTime, double slope, int slopeDirection)
{
// Коэффициенты для расчета тормозного пути в зависимости от типа транспортного средства и дорожного покрытия
double vehicleCoefficient = 0;
double roadCoefficient = 0;

switch (vehicleType)
{
case 1: // Мопед
vehicleCoefficient = 0.5;
break;
case 2: // Мотоцикл
vehicleCoefficient = 0.7;
break;
case 3: // Легковой автомобиль
vehicleCoefficient = 0.8;
break;
case 4: // Грузовой автомобиль до 12 тонн
vehicleCoefficient = 1.2;
break;
case 5: // Грузовой автомобиль свыше 12 тонн или автобус
vehicleCoefficient = 1.5;
break;
default:
Console.WriteLine("Неправильно выбран вид транспортного средства.");
break;
}

switch (roadCondition)
{
case 1: // Сухой асфальт
roadCoefficient = 0.7;
break;
case 2: // Обледенение
roadCoefficient = 1.5;
break;
case 3: // Дождь
roadCoefficient = 1.2;
break;
default:
Console.WriteLine("Неправильно выбран вид дорожного покрытия.");
break;
}

// Рассчитываем тормозной путь в метрах
double brakingDistance = (speed / 3.6 * perceptionTime) +
(speed / 3.6 * reactionTime) +
(Math.Pow(speed / 3.6, 2) / (2 * 9.8 * (vehicleCoefficient + roadCoefficient)));

// Корректируем тормозной путь для уклона дороги
if (slopeDirection == 2) // Если движение вниз по уклону
{
brakingDistance += Math.Abs((Math.Pow(speed / 3.6, 2) / (2 * 9.8)) * Math.Sin(Math.Atan(slope / 100)));
}

return brakingDistance;
}
}
PlzlovemeЗнаток (408) 7 месяцев назад
Огромное спасибо тебе за работу
Похожие вопросы