Компьютерное моделирование. Нет вывода

Всем привет, возникла проблема с заданием по компьютерному моделированию. Решение вроде правильное, но вывода нет ни при каких аргументах. В чём может быть проблема? Я в физике вообще никак, поэтому и прошу помощи.

Задание: Глубинная бомба, установленная на взрыв на заданной глубине, сбрасывается со стоящего неподвижно противолодочного корабля. Исследовать связь между временем достижения заданной глубины и формой корпуса (сферической, полусферической, каплевидной и т.д.).

Код:

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

const double g = 9.8; //Ускорение свободного падения, м/с^2

//Функция для дифференциальное уравнение
double diffEquation(double v, double k, double m){
    return g - (k / m) * v;
}

int main(){
    //Начальные условия
    double v0 = 0.0; //Начальная скорость, м/с
    double depth = 50.0; //Заданная глубина, м
    double dt = 0.1; //Шаг по времени, с
    double k_sphere = 0.1; //Коэффициент сопротивления для сферической формы
    double k_other = 0.05; //Коэффициент сопротивления для других форм
    //Ввод
    cout << "Введите начальную скорость (v0, м/с): "; cin >> v0;
    cout << "Введите глубину (depth, м): "; cin >> depth;
    cout << "Введите время шага (dt, с): "; cin >> dt;
    cout << "Введите коэффициент сопротивления для сферической формы (k_sphere): "; cin >> k_sphere;
    cout << "Введите коэффициент сопротивления для другой формы (k_other): "; cin >> k_other;
    
    //Параметры для численного метода Эйлера
    double t = 0.0; //Время, с
    double v = v0; //Текущая скорость, м/с

    //Цикл численного решения
    while (t < 100.0){ //Произвольный предел времени (можно уточнить)
        //Выбор коэффициента сопротивления в зависимости от формы корпуса
        double k = (v < 0) ? k_sphere : k_other;
        string type = (k == k_sphere) ? "Cфера" : "Другая";

        //Вычисление новой скорости с использованием метода Эйлера
        v += dt * diffEquation(v, k, 1.0);
        

        //Обновление времени
        t += dt;

        //Проверка достижения заданной глубины
        if (v < 0 && -v * t >= depth){
            cout << "Время достижения глубины " << depth << " м заняло " << t << " с." << " для формы корпуса:" << type << endl;
            break;
        }
    }
    return 0;
}

Ответы (0 шт):