Привет! Меня зовут Макс и сегодня я хочу рассказать тебе о том‚ как можно создать класс треугольник на языке программирования C без использования стандартного вектора. При этом я поделюсь своим личным опытом и расскажу о том‚ как я справился с этой задачей.Для начала‚ мы можем определить класс треугольник. В нем мы можем создать переменные‚ которые будут представлять координаты трех точек. В моем случае я назвал эти переменные x1‚ y1‚ x2‚ y2‚ x3 и y3‚ что соответствует координатам точек A‚ B и C.cpp
class Triangle {
public⁚
float x1‚ y1‚ x2‚ y2‚ x3‚ y3;
};
Далее‚ я добавил методы‚ которые помогут проверить существование треугольника‚ вычислить и вывести информацию о нем ⎻ длины сторон‚ углы‚ периметр и площадь. Вот как выглядит моя реализация⁚
cpp
#include
#include
class Triangle {
public⁚
float x1‚ y1‚ x2‚ y2‚ x3‚ y3;
bool isTriangle {
float a sqrt(pow(x2 ⎻ x1‚ 2) pow(y2 ‒ y1‚ 2));
float b sqrt(pow(x3 ‒ x2‚ 2) pow(y3 ‒ y2‚ 2));
float c sqrt(pow(x1 ‒ x3‚ 2) pow(y1 ⎻ y3‚ 2));
if (a b > c nn a c > b nn b c > a) {
return true;
}
return false;
}
void printInfo {
float a sqrt(pow(x2 ⎻ x1‚ 2) pow(y2 ⎻ y1‚ 2));
float b sqrt(pow(x3 ‒ x2‚ 2) pow(y3 ‒ y2‚ 2));
float c sqrt(pow(x1 ‒ x3‚ 2) pow(y1 ‒ y3‚ 2));
std⁚⁚cout << ″Стoрoны⁚ ″ << a << ″‚ ″ << b << ″‚ ″ << c << std⁚⁚endl; float angleA acos((b * b c * c ‒ a * a) / (2 * b * c)); float angleB acos((c * c a * a ‒ b * b) / (2 * c * a)); float angleC acos((a * a b * b ⎻ c * c) / (2 * a * b)); std⁚⁚cout << ″Углы⁚ ″ << angleA << ″‚ ″ << angleB << ″‚ ″ << angleC << std⁚⁚endl;
float perimeter a b c; float s perimeter / 2; float area sqrt(s * (s ‒ a) * (s ‒ b) * (s ⎻ c)); std⁚⁚cout << ″Периметр⁚ ″ << perimeter << std⁚⁚endl; std⁚⁚cout << ″Площадь⁚ ″ << area << std⁚⁚endl; } }; Далее‚ я создал подкласс Triangle‚ который представляет равнобедренный треугольник. В этом классе я добавил дополнительный метод для проверки‚ является ли треугольник равнобедренным. Вот как это выглядит⁚ cpp class IsoscelesTriangle ⁚ public Triangle { public⁚ bool isIsosceles { float a sqrt(pow(x2 ‒ x1‚ 2) pow(y2 ⎻ y1‚ 2)); float b sqrt(pow(x3 ⎻ x2‚ 2) pow(y3 ⎻ y2‚ 2)); float c sqrt(pow(x1 ‒ x3‚ 2) pow(y1 ‒ y3‚ 2)); if (a b || b c || a c) { return true; } return false; } }; Наконец‚ я написал программу‚ которая демонстрирует работу с этими классами. Я создал несколько объектов-треугольников и нашел номера подобных треугольников‚ а также равнобедренный треугольник с наибольшей площадью. Вот как это выглядит⁚ cpp int main { int N 5; // Количество треугольников int M 3; // Количество равнобедренных треугольников Triangle triangles[N]; IsoscelesTriangle isoscelesTriangles[M]; // Инициализация объектов треугольников // Проверка на подобие треугольников for (int i 0; i < N; i ) { for (int j 0; j < N; j ) { if (i ! j nn isSimilar(triangles[i]‚ triangles[j])) { std⁚⁚cout << ″Треугольник ″ << i 1 << ″ подобен треугольнику ″ << j 1 << std⁚⁚endl; } } } // Поиск равнобедренного треугольника с наибольшей площадью int maxAreaIndex 0; float maxArea isoscelesTriangles[0].getArea; for (int i 1; i < M; i ) { float area isoscelesTriangles[i].getArea; if (area > maxArea) {maxArea area;
maxAreaIndex i;
}
}
std⁚⁚cout << ″Равнобедренный треугольник с наибольшей площадью⁚ ″ << maxAreaIndex 1 << std⁚⁚endl; return 0; } Вот и всё! Я показал‚ как создать класс треугольник на языке C без использования стандартного вектора. Теперь ты можешь использовать этот код в своих проектах и работать с треугольниками. Удачи!