Estaba haciendo un programa para convertir un número entero a binario, cuando de repente vino a mi mente cómo dividir un número de forma entera, sacando el resultado (cociente) y lo que sobra (residuo) en una sola operación; y ahí es en donde entra la función div en C para dividir números.
Ok, yo sé que se puede dividir con el operador /
. Pero, ¿cómo dividimos de manera entera?
Es decir, yo puedo dividir 5 entre 2 y el resultado es 2.5, pero si quiero sacar el sobrante o residuo por separado entonces digo que 5 entre 2 es 2, y sobra 1.
La función div en C hace justamente eso: realiza la operación y regresa el cociente y el residuo de una división en una llamada a la función.
Esta función recibe dos enteros: el numerador y el denominador, en el orden en el que dividimos.
En otras palabras, si al dividir usamos 5 / 2
ahora llamamos a la función con div(5, 2)
Regresa una variable de tipo div_t
que es un struct (algo así como un objeto) que a su vez tiene dos variables: cociente y residuo. El cociente está en .quot
y el residuo en .rem
Vamos a ejemplificar su uso al dividir 5 entre 2. Primero debemos incluir la librería que define el tipo div_t
así como la función div
; dicha librería se llama stdlib.h.
Por lo tanto, hacemos un #include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
// La variable resultadoDeLaDivision es
// de tipo div_t
div_t resultadoDeLaDivision;
resultadoDeLaDivision = div(5, 2);
printf(
"El cociente es %d y el residuo es %d\n",
resultadoDeLaDivision.quot,
resultadoDeLaDivision.rem
);
return 0;
}
Al ejecutar el programa, la salida es:
Por lo que ha dividido enteramente, y ha tomado el residuo por separado. Internamente la función usa el operador %
para sacar el residuo, y el operador /
para dividir.
De esta manera podemos obtener el residuo y cociente en una única llamada a una función, además de que es un poco más expresivo.
Por cierto, también existe la función ldiv
(es una L, no una I la del inicio) que es parecida pero funciona mejor para números de tipo long int
.
Como lo dije, buscaba la manera de dividir y obtener las cosas por separado, la respuesta la encontré en este post: https://stackoverflow.com/questions/7943126/divide-without-losing-remainder
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios