La función midpoint() calcula el punto medio de los números enteros, puntos flotantes o punteros a y b.
Archivo de cabecera:
<numeric>
Parámetros: Esta función acepta dos tipos de datos como enteros, puntos flotantes, valores de puntero.
Devolver:
Devuelve los puntos medios de los tipos de datos dados.
Algoritmo que implementa esta función :
- La mitad de la suma de ayb sin desbordamiento . Igual que, (a + b)/2.
- Si a y b son tipos enteros y la suma es impar, el resultado se redondea hacia a.
- Si a y b son tipos de coma flotante, se produce como máximo una operación inexacta (redondeada a cero).
- Si a y b apuntan a x[i] y x[j] respectivamente del mismo objeto de array x (a efectos de la aritmética de punteros ), el resultado será un puntero a x[i + (j – i)/2 ] (o, equivalentemente x[std::midpoint(i, j)]) donde la división se redondea hacia cero. Si a y b no apuntan a elementos del mismo objeto de array, el comportamiento no está definido.
Usos de la función midpoint() :
- Punto medio de dos números enteros usando midpoint(): A continuación se muestra el programa C++ para demostrar el punto medio de dos números enteros usando 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; }
Producción:
- midpoint() puede manejar casos como un desbordamiento: A continuación se muestra el programa C++ para demostrar cómo manejar el desbordamiento usando 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) << "\n\n"; return 0; }
Producción:
- Punto medio de dos números flotantes usando midpoint(): A continuación se muestra el programa C++ para demostrar cómo encontrar el punto medio de dos números de punto flotante usando 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; }
Producción:
- Punto medio entre dos punteros que apuntan al mismo objeto usando midpoint(): A continuación se muestra el programa C++ para demostrar cómo encontrar el punto medio de dos punteros que apuntan al mismo objeto usando 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; }
Producción:
Publicación traducida automáticamente
Artículo escrito por scorchingeagle y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA