midpoint () в C ++ 20 с примерами

Опубликовано: 29 Декабря, 2021

Функция midpoint () вычисляет среднюю точку целых чисел, чисел с плавающей запятой или указателей a и b.

Заголовочный файл:

<число>

Параметры: эта функция принимает два типа данных, такие как целые числа, числа с плавающей запятой, значения указателя.

Возвращение:

Он возвращает средние точки данных типов.

Алогритм эта функция реализует :

  • Половина суммы a и b без переполнения. То же, что (a + b) / 2.
  • Если a и b являются целочисленными типами и сумма нечетная, результат округляется в сторону a.
  • Если a и b являются типами с плавающей запятой, выполняется не более одной неточной операции (округляется до нуля).
  • Если a и b указывают на x [i] и x [j] одного и того же объекта массива x (в целях арифметики указателей), соответственно, результатом будет указатель на x [i + (j - i) / 2] (или, что эквивалентно, x [ std :: midpoint (i, j)]), где деление округляется до нуля. Если a и b не указывают на элементы одного и того же объекта массива, поведение не определено.

Использование функции midpoint () :

  1. Средняя точка двух целых чисел с использованием midpoint (): Ниже приведена программа на C ++, демонстрирующая среднюю точку двух целых чисел с использованием midpoint () :

    C ++

    // C++ program to demonstrate the
    // midpoint function
    #include <iostream>
    #include <numeric>
    using namespace std;
    // Driver Code
    int main()
    {
    // a and b both of integer type
    int a = 3;
    int b = 6;
    cout << "midpoint(" << a << ", "
    << b << "): "
    << midpoint(a, b) << endl;
    a = 6;
    b = 3;
    cout << "midpoint(" << a
    << ", " << b << "): "
    << midpoint(a, b) << endl;
    return 0;
    }

    Выход:

  2. midpoint () может обрабатывать такие случаи, как переполнение: Ниже приведена программа на C ++, демонстрирующая, как обрабатывать переполнение с помощью midpoint () :

    C ++



    // C++ program for the above approach
    #include <climits>
    #include <iostream>
    #include <numeric>
    using namespace std;
    // Driver Code
    int main()
    {
    // a stores maximum storable
    // value of integer
    int a = INT_MAX;
    // b stores maximum storable
    // value of integer - 2
    int b = INT_MAX - 2;
    cout << "a: " << a << endl
    << "b: " << b << endl
    << "Incorrect (overflow"
    << " and wrapping): "
    << (a + b) / 2 << endl
    << "Correct: "
    << midpoint(a, b) << " " ;
    return 0;
    }

    Выход:

  3. Средняя точка двух чисел с плавающей запятой с использованием midpoint (): Ниже приведена программа на C ++, демонстрирующая, как найти среднюю точку двух чисел с плавающей запятой с помощью midpoint () :

    C ++

    // C++ program for the above approach
    #include <iostream>
    #include <numeric>
    using namespace std;
    int main()
    {
    // x and y both floating type
    float x = 6.56;
    float y = 7.23;
    cout << "midpoint(" << x
    << ", " << y << "): "
    << midpoint(x, y) << endl;
    x = 2.0;
    y = 3.0;
    cout << "midpoint(" << x
    << ", " << y << "): "
    << midpoint(x, y)
    << endl
    << endl;
    }

    Выход:

  4. Средняя точка между двумя указателями, указывающими на один и тот же объект с помощью midpoint (): Ниже приведена программа на C ++, демонстрирующая, как найти среднюю точку двух указателей, указывающих на один и тот же объект с помощью midpoint () :

    C ++

    // C++ program for the above approach
    #include <iostream>
    #include <numeric>
    using namespace std;
    // Driver Code
    int main()
    {
    // str is a character array
    char str[] = "GeeksforGeeks" ;
    // str1 is pointing to the
    // 5-th element in str
    char * str1 = &str[4];
    // str2 is pointing to the
    // 10-th element in str
    char * str2 = &str[9];
    // str1 and str2 is pointing same
    // object str therefore, we can
    // logically compute and point a
    // middle element in str
    cout << "midpoint('" << *str1
    << "', '" << *str2 << "'): '"
    << *midpoint(str1, str2)
    << "'" << endl;
    cout << "midpoint('" << *str2
    << "', '" << *str1 << "'): '"
    << *midpoint(str2, str1)
    << "'" << endl;
    }

    Выход:

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++