Временная задержка, исполнение кода один раз за интервал времени - 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;

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы со временем и вводом-выводом
  2. Определение переменной REPEAT, которая задает количество повторений движения
  3. Объявление константы dt, которая определяет временной шаг движения
  4. Объявление переменных y, x, t, vy, vy1, vx типа double для работы с числами с плавающей точкой
  5. Ввод начальных значений для переменных y и vx с помощью функции scanf
  6. Инициализация переменных vy и vy1 нулевыми значениями
  7. Установка начальное значение переменной t равным нулю
  8. Запуск цикла while, который будет выполняться до тех пор, пока значение переменной y больше нуля
  9. Внутри цикла вычисление новой вертикальной скорости vy1 на основе старой вертикальной скорости vy и ускорения свободного падения g, умноженного на временной шаг dt
  10. Обновление значения переменной y на основе новой вертикальной скорости vy1 и горизонтальной скорости vx, умноженных на временной шаг dt
  11. Обновление значения переменной vy на значение vy1
  12. Обновление значения переменной x на основе горизонтальной скорости vx, умноженной на временной шаг dt
  13. Обновление значения переменной t на значение временного шага dt
  14. Вывод на экран значений переменных t, y, x, vx и vy с помощью функции printf
  15. Запуск цикла while, который будет ожидать, пока текущее время не станет равным заданному времени задержки (DELAY) после предыдущего вывода на экран
  16. Код внутри цикла while выполняется только один раз за интервал времени DELAY
  17. По завершении цикла while выполнение программы продолжается
  18. Возврат значения 0, что означает успешное завершение программы
  19. Значение 0, возвращаемое функцией main, говорит о том, что программа успешно завершилась
  20. Значение 0, возвращаемое функцией main, говорит о том, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы