Главная страница
qrcode

4690636_Задание. Написать программу на С в консоли для моделирования физической задачи


Скачать 137.97 Kb.
НазваниеНаписать программу на С в консоли для моделирования физической задачи
Дата22.03.2020
Размер137.97 Kb.
Формат файлаdocx
Имя файла4690636_Задание.docx
ТипЗакон
#84616
Каталог

Написать программу на С++ в консоли для моделирования физической задачи:

Падение тела (твердого шарика) на твердую наклонную плоскость (упругое столкновение)

Вывести полученные значения для построения графика зависимости скорости от времени в файл. График построить при помощи какого-либо графического редактора из файла.

Из закона сохранения энергии можно найти скорость шарика перед ударом

время до второго удара

t = 2*v0/g

Проекции скорости в точке

vx = v0*sin(α)+g*t*sin(α)

vy = v0*cos(α)-g*t*sin(α)

Пишем программу

#include "stdafx.h"

#include

#include

#include

#include

#include

#include
using namespace std;
double getValue(char* s)

{

while (true) // цикл продолжается до тех пор, пока пользователь не введёт корректное значение

{

std::cout << s;

double a;

std::cin >> a;
if (std::cin.fail()) // если предыдущее извлечение оказалось неудачным,

{

std::cin.clear(); // то возвращаем cin в 'обычный' режим работы

std::cin.ignore(32767, '\n'); // и удаляем значения предыдущего ввода из входного буфера

}

else // если всё хорошо, то возвращаем a

return a;

}

}
int main()

{

setlocale(LC_ALL, "Russian");

FILE *fp;

if ((fp=fopen("1.txt", "w")) == NULL)

{

return 1;

}

const double PI = 3.141592653589793238463;

double g = 9.81; //ускорение свободного падения

double t1; //время

//double alfa = 30; //угол наклона плоскости

//double h = 2; //высота, с кторой падает шарик
double alfa = getValue("Введите угол наклона плоскости в градусах: ");

double h = getValue("Введите высоту, с кторой падает шарик в метрах: ");
double v0 = sqrt(2.0 * g*h);

alfa = alfa / 180.0*PI; //переводим в радианы

double vx,vy,v; //проекции вектора скорости и вектор скорости

double t = 2*v0/g; //полное время движения шарика между соударениями с плоскостью

cout << "\n";

cout << "Время между соударениями = " <
cout << "Начальная скорость = " << v0 << "\n";

cout << "\n";

t1 = 0.0;

double h1 = t / 50; //шаг по времени

printf("%9s %9s %9s %9s", "t", "vx", "vy", "v\n");

fprintf(fp,"%9s %9s %9s %9s", "t", "vx", "vy", "v\n");

while (t1<=t+0.0000001)

{

vx = v0*sin(alfa) + g*sin(alfa)*t1;

vy = abs(v0*cos(alfa) - g*cos(alfa)*t1);

v = sqrt(vx*vx + vy*vy);

printf("%9.3f %9.3f %9.3f %9.3f\n",t1,vx,vy,v);

fprintf(fp,"%9.3f %9.3f %9.3f %9.3f\n", t1, vx, vy, v);
t1 = t1 + h1;

}

system("pause");

return 0;

}

Создан файл “1.txt”

Идем в Excel, открываем файл

Строим график


перейти в каталог файлов


связь с админом