Найти Реднеарифметическое Двух Элементов Равное Х

Тема в разделе "C/C++/C#", создана пользователем Avicii, 21 дек 2012.

  1. Avicii

    Avicii New Member

    Регистрация:
    21 дек 2012
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте,помогите с программой. Задание: В массиве найти два члена,среднее арифметическое которых ближе всего к Х.
    Есть программа,но она ищет только 1 пару таких чисел, а надо все возможные
    Код (C++):
    #include <iostream>
    #include <cmath>
    int main()
    {
    const unsigned n = 10;
    float X = 5.45;
    int A[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    unsigned first = 0;
    unsigned second = 1;
    float diff = std::abs(((A[first] + A[second]) / 2) - X);
    for (unsigned i = 0; i < n-1; ++i)
    {
    for (unsigned j = i+1; j < n; ++j)
    {
    float calc = std::abs(((A[i] + A[j]) / 2) - X);
    if (calc < diff)
    {
    diff = calc;
    first = i;
    second = j;
    }
    }
    }
    std::cout << "A[" << first << "] = " << A[first] << std::endl;
    std::cout << "A[" << second << "] = " << A[second] << std::endl;
    std::cout << "average = " << ((A[first] + A[second]) / 2) << std::endl;
    return 0;
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    проди еще раз по массиву
    но вместо
    if (calc < diff)
    и=пиши
    if (calc == diff)

    тока сравнивать дробные числа нельзя, сам придумай как это правильно делать :)
     
Загрузка...

Поделиться этой страницей