Временная задержка, исполнение кода один раз за интервал времени - C (СИ)
Формулировка задачи:
Всем привет!
Программа имитирующую работу высотомера бомбы. Бамба падает с высоты Н, которая которая задается пользователем. В любой момент времени можно узнать пройденное расстояние по формуле
L = g(t*t)/2, где g = 9.81 m/(c*c)
Высотомер бомбы срабатывает раз в секунду и выводит на терминал текущее значение высоты над поверхностью земли h.
Помогите с кодом программы(дополните) , вот код Простой временной задержки:
# include <stdio.h> # include <time.h> # define REPEAT 5 # define DELAY 500 int main() { int i; clock_t now,delay; for(i=0;i<REPEAT;i++) { now=clock(); while(clock()<now+DELAY); putchar(’\a’); } return 0;
Решение задачи: «Временная задержка, исполнение кода один раз за интервал времени»
textual
Листинг программы
# include <stdio.h> # include <time.h> # define REPEAT 5 // CLOCKS_PER_SEC # define DELAY CLOCKS_PER_SEC/10 const double dt=0.1; const double g=9.81; double y, x, t; double vy, vy1, vx; int main() { int i; clock_t now,delay; printf("Введи высоту падения"); scanf("%f", &y); printf("Введи гор. скорость"); scanf("%f", &vx); vy=0.0; vy1=0.0; t=0.0; while(y>0.0) { vy1=vy-g*dt; y=y+0.5*(vy1+vy)*dt; vy=vy1; x=x+vx*dt; t=t+dt; now=clock(); printf("Время t=%f c Высота Y=%f м Дальность X=%f м гор.скорость Vx=%f м/с Верт.скорость Vy=%fм/с\n", t, y, x, vx, vy); while(clock()<now+DELAY); } return 0;
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со временем и вводом-выводом
- Определение переменной REPEAT, которая задает количество повторений движения
- Объявление константы dt, которая определяет временной шаг движения
- Объявление переменных y, x, t, vy, vy1, vx типа double для работы с числами с плавающей точкой
- Ввод начальных значений для переменных y и vx с помощью функции scanf
- Инициализация переменных vy и vy1 нулевыми значениями
- Установка начальное значение переменной t равным нулю
- Запуск цикла while, который будет выполняться до тех пор, пока значение переменной y больше нуля
- Внутри цикла вычисление новой вертикальной скорости vy1 на основе старой вертикальной скорости vy и ускорения свободного падения g, умноженного на временной шаг dt
- Обновление значения переменной y на основе новой вертикальной скорости vy1 и горизонтальной скорости vx, умноженных на временной шаг dt
- Обновление значения переменной vy на значение vy1
- Обновление значения переменной x на основе горизонтальной скорости vx, умноженной на временной шаг dt
- Обновление значения переменной t на значение временного шага dt
- Вывод на экран значений переменных t, y, x, vx и vy с помощью функции printf
- Запуск цикла while, который будет ожидать, пока текущее время не станет равным заданному времени задержки (DELAY) после предыдущего вывода на экран
- Код внутри цикла while выполняется только один раз за интервал времени DELAY
- По завершении цикла while выполнение программы продолжается
- Возврат значения 0, что означает успешное завершение программы
- Значение 0, возвращаемое функцией main, говорит о том, что программа успешно завершилась
- Значение 0, возвращаемое функцией main, говорит о том, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д