【问题标题】:How to find maximum area among given triangles on C++如何在C ++上找到给定三角形中的最大面积
【发布时间】:2014-02-08 23:07:51
【问题描述】:

输入应该是 n - 三角形的数量 (1

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

这就是我到目前为止所做的。顺便说一下,“p”代表半参数.. - 我使用的是 Heron 的公式。我什至没有得到它来“计算”面积最大的n,而是最大面积本身,但它不起作用,而是给了我一个巨大的错误。有什么想法吗?

【问题讨论】:

  • 首先编写计算三角形面积的代码,然后编写可以找到序列中最大值的代码。 当这两个部分都正常工作时, 然后将它们结合起来。

标签: c++ math geometry max area


【解决方案1】:

你有几个问题:

  • 您需要将 spints 更改为 doubles(否则您的结果会被截断)。
  • 您需要将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】:

您只分配了 2 个双打。你需要3个,试试double y[3]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2010-12-03
    • 2021-12-21
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多