https://pastein.ru/t/UZ

  скопируйте уникальную ссылку для отправки


#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;
		}
	}
}