Operador de Módulo
Parte da seção Fundamentos do Journey de C++ da Coddy — lição 17 de 74.
O operador módulo % fornece o resto de uma divisão. Em C++, ele é usado com uma sintaxe simples:
result = dividend % divisor;- dividendo: O número que está sendo dividido.
- divisor: O número que divide o dividendo.
- resultado: O resto da divisão.
Por exemplo:
result = 10 % 3;Aqui, 10 é dividido por 3. 3 cabe em 10 três vezes, com um resto de 1. Portanto, result será 1.
Geralmente, o módulo é usado para verificar se um número é par ou ímpar:
- Se um número for par, dividi-lo por 2 deixará um resto 0.
- Se um número for ímpar, dividi-lo por 2 deixará um resto 1.
Ao trabalhar com números de ponto flutuante (doubles) em C++, você não pode usar o operador de módulo % diretamente. Em vez disso, você precisa usar a função fmod() da biblioteca <cmath>. Ela funciona de forma semelhante ao operador de módulo, mas mantém a precisão decimal. Por exemplo:
#include <cmath>
double result = fmod(5.2, 2.0);
// result é 1.2Veja como funciona: 2.0 cabe em 5.2 duas vezes (4.0), e o resto é 1.2 (5.2 - 4.0 = 1.2).
Outro exemplo:
double result = fmod(7.8, 3.5);
// result é 0.8Quando o divisor é maior que o dividendo, o resultado é igual ao dividendo. Isso se aplica tanto ao % quanto ao fmod().
5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5Por quê? O divisor cabe zero vezes, então todo o dividendo é o resto.
Desafio
InicianteEscreva um código que inicialize três variáveis, a (int), b (double) e c (int) com os valores 9, 2.6 e 11 (respectivamente).
Depois disso, inicialize as seguintes variáveis:
d (int)que conterá o resultado deamódulo2e (int)que conterá o resultado deamódulo3f (double)que conterá o resultado debmódulo1.5g (double)que conterá o resultado debmódulo3.9h (int)que conterá o resultado decmódulo10
Confira o resultado e veja como diferentes dividendos e divisores afetam o resultado.
Folha de consulta
O operador módulo % fornece o resto de uma divisão:
result = dividend % divisor;Exemplo:
result = 10 % 3; // o resultado é 1Caso de uso comum - verificar se um número é par ou ímpar:
- Números pares:
number % 2 == 0 - Números ímpares:
number % 2 == 1
Para números de ponto flutuante, use fmod() de <cmath>:
#include <cmath>
double result = fmod(5.2, 2.0); // o resultado é 1.2
double result2 = fmod(7.8, 3.5); // o resultado2 é 0.8Quando o divisor é maior que o dividendo, o resultado é igual ao dividendo. Isso se aplica tanto a % quanto a fmod().
Experimente você mesmo
#include <iostream>
#include <cmath>
int main() {
// Digite seu código abaixo
// Não altere a linha abaixo
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "e = " << e << std::endl;
std::cout << "f = " << f << std::endl;
std::cout << "g = " << g << std::endl;
std::cout << "h = " << h << std::endl;
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 1
Operadores AritméticosOperador de MóduloIncremento/DecrementoPós-incremento/DecrementoAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Fundamentos de Entrada/Saída
Comando coutComando cinEntrada de StringRevisão - Até 120Revisão - Verdadeiro ou Falso3Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaRecapitulação - Inicializar VariáveisType Casting Parte 1Type Casting Parte 26Tomada de Decisão
Estrutura IfIf - ElseEstrutura SwitchOperador CondicionalRecapitulação - If ElseIf - Else Aninhado