Como sacar el residuo de una division en C++
No siempre que realizamos una división esta es exacta, si dividiéramos 3 entre 3 el resultado es uno pero si dividimos ese mismo 3 entre dos, nos damos cuenta que nos va a sobrar un uno que no podemos dividir entre 2 y de intentar hacerlo tendríamos que partir la unidad y nos daría un resultado decimal, en este caso el resultado es 1.5, cuando hablamos de residuo hacemos referencia a esa parte del dividendo que sobra y no puede repartirse entre el divisor porque de hacerlo tendríamos que recurrir a decimales, así podemos decir que el residuo de 14 / 5 es 4.
En ocasiones nos puede interesar conocer dicho residió para esto existe una función en C++ dentro de la librería <cstdlib> llamada div();, tras usar esta función nos devolverá 2 resultados, el primero es la parte entera del resultado de la división y el segundo es el residuo, haciendo uso del ejemplo anterior al dividir 14 entre 5 nos devolverá la parte entera del resultado que es 2 y el residuo que es 4, ambos resultados se almacenaran en una sola variable que en verdad es una estructura de tipo div_t en lugar de ser de tipo int, con el siguiente ejemplo queda más clara su implementación y uso.
#include <cstdlib>
#include <iostream> // Necesaria para ver el resultado en pantalla
using namespace std;
int main()
{
div_t resultado;
resultado = div(14,5); // El primer numero sera dividido entre el segundo
cout << "El resultado es:" << resultado.quot << endl;
cout << "El residuo es:" << resultado.rem << endl;
system("pause");
return 0;
}
Explicando el ejemplo anterior
Bien puede observarse en el ejemplo anterior que para acceder al resultado de la división lo hacemos ingresando al atributo .quot, esta palabra se deriva del inglés quotient que significa cociente, para ingresar al residuo hacemos uso del atributo .rem del inglés remainder y precisamente significa residuo.
Si en lugar de dividir los números directamente preferimos dividir números almacenados en 2 variables podemos hacerlo sin problema, las variables han de ser de tipo int veamos cómo se hace.
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int valor1;
int valor2;
valor1=29;
valor2=5;
div_t resultado;
resultado = div(valor1,valor2);
cout << "El resultado es:" << resultado.quot << endl;
cout << "El residuo es:" << resultado.rem << endl;
system("pause");
return 0;
}
Como puede apreciarse es sencillo realizar esta operación, he implementado las variables porque la mayor parte de las ocasiones lo que queremos es obtener el resultado y el residuo de una división que no conocemos, por ejemplo cuando el usuario ingresa los dos valores a dividir en este caso serán almacenados en la variable. Pese a que esta función se puede usar para muchos proyectos que pueden llegar a ser difíciles quedo atento a cualquier consulta que tengan.
¿Como se utiliza el operador modulo en C++?
Otra forma mucho más sencilla de obtener el residuo en una división si únicamente deseamos dicho residuo es utilizar el operador de modulo, aunque no obtendremos el resultado de la división solo su residuo, este operador es %, se usa igual que los otros operadores (+,-,/...) veamos el ejemplo a continuación:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int valor1;
int valor2;
int residuo;
valor1=29;
valor2=5;
residuo = valor1 % valor2; // Aqui la parte importante (lo diferente).
cout << "El resultado es:" << residuo << endl;
system("pause");
return 0;
}
Aunque como bien decíamos con este operador solo obtendremos el residuo y no el resultado en otra variable, hay momentos donde solo necesitamos dicho residuo y por tanto evitar procesamiento innecesario siempre es la mejor opción, en resumen este es el método más sencillo y adecuado si buscamos solo ese valor.
En la siguiente imagen puede observar el resultado y asi considerar si es de su agrado: