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 () :
- Средняя точка двух целых чисел с использованием 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;
}
Выход:
- 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;
}
Выход:
- Средняя точка двух чисел с плавающей запятой с использованием 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;
}
Выход:
- Средняя точка между двумя указателями, указывающими на один и тот же объект с помощью 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 и многому другому, см. Полный курс подготовки к собеседованию .