BlinCT
Қаң. 3, 2017, 2:02 Т.Қ.

Поиск максимальных чисел в QPointF

#Qt

Всем привет. Проблема состоит в том каким подходом воспользоватся при поиске максимальных чисел. В хедере есть 2 переменные float m_maxX; float m_maxY; Мы их должны получить в конструкторе из point.

SimpleStandCalculator::SimpleStandCalculator(const PointList &points): m_points(points)
{
    int pointsLeft = 0;     // number of points in the left part
    double x_sum, y_sum;
    x_sum = y_sum = 0.0;

    foreach(const QPointF point, m_points) {
        if(point.x() < 0.0)
            pointsLeft++;
        x_sum += point.x();
        y_sum += point.y();
    m_maxX = ?;
    m_maxY = ?;
    }
    const float fCount = (float)m_points.length();
    m_avg_x = x_sum/fCount;
    m_avg_y = y_sum/fCount;
}
0

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

1
Evgenii Legotckoi
  • Қаң. 3, 2017, 3:10 Т.Қ.
  • Жауап шешім ретінде белгіленді.

Привет!
Нужно тогда вначале их обнулить. А потом уже выбирать максимальное число из переменных m_maxX и m_maxY с помощью шаблонной функции qMax() .

SimpleStandCalculator::SimpleStandCalculator(const PointList &points): m_points(points)
{
    int pointsLeft = 0;     // number of points in the left part
    double x_sum, y_sum;
    x_sum = y_sum = 0.0;
    m_maxX = 0.0;
    m_maxY = 0.0;

    foreach(const QPointF point, m_points) {
        if(point.x() < 0.0)
            pointsLeft++;
        x_sum += point.x();
        y_sum += point.y();
    m_maxX = qMax(m_maxX, point.x());
    m_maxY = qMax(m_maxY, point.y());
    }
    const float fCount = (float)m_points.length();
    m_avg_x = x_sum/fCount;
    m_avg_y = y_sum/fCount;
}

Единственный момент, который хотелось бы уточнить, так это то, что имеются ли в данном случае точки с отрицательными координатами и нужно ли выбирать максимальное число по модулю от числа, поскольку по модулю отрицательное число может быть больше чем положительное.

    Пікірлер

    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
    Кіріңіз немесе Тіркеліңіз