Временная задержка, исполнение кода один раз за интервал времени - 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, говорит о том, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д