На входе должно быть n — количество треугольников (1 <= n <= 20) и затем n строк по три двойных в каждой (соответствующих каждой из сторон треугольника). Выход должен быть «n», который имеет максимальную площадь треугольника.
#include <iostream>
#include <math.h>
using namespace std;
const int MAX_SIZE = 20;
int main()
{
int n, s, p;
double max = 0;
cin >> n;
int x[MAX_SIZE];
for (int i = 0; i < n; i++)
{
double y[2];
for (int j = 0; j < 3; j++)
cin >> y[j];
p = (y[0] + y[1] + y[2]) / 2;
s = sqrt(p * (p - y[0]) * (p - y[1]) * (p - y[3]));
if (s >= max) max = s;
}
cout << max;
return 0;
}
Это то, что я сделал до сих пор. Кстати, «р» обозначает полупараметр … — Я использую формулу Херона. Я даже не получил его, чтобы «сосредоточиться» на n, где максимальная площадь, а на самом деле максимальная площадь, но это не работает, но вместо этого дает мне большую ошибку. Есть идеи?
У вас есть несколько проблем:
s
а также p
от int
с double
s (в противном случае вы получите нежелательное усечение ваших результатов).double y[2];
в double y[3];
(поскольку вам нужно три длины стороны, а не две).s = sqrt(p * (p - y[0]) * (p - y[1]) * (p - y[3]));
в s = sqrt(p * (p - y[0]) * (p - y[1]) * (p - y[2]));
(поскольку y[3]
находится за пределами вашего массива).Обратите внимание, что вы можете избавиться от вашего массива x
, поскольку вы, кажется, на самом деле нигде не используете его.
Вы выделяете только 2 дубля. Вам нужно 3, попробуйте double y[3]
,