C/C++

Циклы C++. Создание программ с циклическими конструкциями.

Определить количество итераций и использовать цикл с модификатором (с параметром). Сделать программу.
Ввести 5 наборов сторон треугольника а, b, c и определить для каких сторон высота ha
будет наибольшей. Помогите с этим заданием, пожалуйста.
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
class Triangle {
public:
Triangle() : a(0), b(0), c(0) {}
Triangle(double a, double b, double c) : a(a), b(b), c(c) {}
double perimeter()const {
return a + b + c;
}
bool exist()const {
return param() > 0;
}
double area()const {
return sqrt(param());
}
double ha()const {
return 2 / a * area();
}
private:
double a, b, c;
double param()const {
auto p = perimeter() / 2;
return p * (p - a) * (p - b) * (p - c);
}
friend bool operator<(const Triangle& a, const Triangle& b) {
return a.area() < b.area();
}
friend bool operator>(const Triangle& a, const Triangle& b) {
return a.area() > b.area();
}
friend ostream& operator<<(ostream& out, const Triangle& t) {
return out << t.a << ' ' << t.b << ' ' << t.c;
}
};
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
return value;
}
Triangle triangle() {
while (true) {
auto a = real("a: ");
auto b = real("b: ");
auto c = real("c: ");
Triangle t(a, b, c);
if (t.exist()) {
puts("");
return t;
}
puts("Треугольник не существует!");
}
}
int main() {
system("chcp 1251 > nul");
const auto n = 5U;
vector<Triangle> box(n);
for (auto& t : box) t = triangle();
auto comp = [](const Triangle& a, const Triangle& b) {
return a.ha() > b.ha();
};
sort(box.begin(), box.end(), comp);
cout << box.front() << " : " << box.front().ha() << '\n';
system("pause > nul");
}
БК
Богдан Кульсарин
65 747
Лучший ответ