#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
const float g = 9.81;
const float PI = 3.14;
class Trajectory {
private:
float speed;
float angle;
float range;
float Range(float speed, float angle)
{
angle = (angle * PI) / 180.0;
return speed * speed * sin(2 * angle) / g;
}
public:
Trajectory (float speed, float angle)
{
this->angle = angle;
this->speed = speed;
this->range = Range(speed, angle);
}
void To_String()
{
printf("При начальной скорости = %.2f и начальном угле полета = %.2f дистанция полета = %.2f\n", speed, angle, range);
}
};
class Set_of_distances
{
vector<Trajectory*> v1;
public:
void Add_Trajectory()
{
printf("Введите значение начальной скорость полета снаряда: ");
float speed;
scanf_s("%f", &speed);
printf("Введите значение угла полета снаряда: ");
float angle;
scanf_s("%f", &angle);
Trajectory* add = new Trajectory(speed, angle);
add->To_String();
v1.push_back(add);
}
void Output()
{
unsigned int vector_size = v1.size();
if (vector_size == 0) printf("Нет значений!\n");
for (size_t i = 0; i < vector_size; i++)
{
v1[i]->To_String();
}
}
};
int main()
{
setlocale(LC_ALL, "");
Set_of_distances user;
bool ready = true;
while (ready)
{
printf("\nЕсли хотите добавить новую траекторию, введите 1;\nЕсли хотите посмотреть список всех дистанций, введите 2;\nЕсли хотите выйти из программы, введите 3;\nВаш ввод: ");
int key;
scanf_s("%i", &key);
switch (key)
{
case 1:
printf("\n");
user.Add_Trajectory();
break;
case 2:
printf("\n");
user.Output();
break;
case 3:
ready = false;
break;
default:
printf("Вы ввели неправильное значение...\n\n");
break;
}
}
}