Lección 3 · 3 de 20
Operaciones y funciones matemáticas · C++
Haga cuentas en C++: división entera y resto, static_cast, operadores compuestos y las funciones de <cmath> como sqrt, pow y round.

Con dos enteros, `/` hace la división entera: 17 / 5 da 3, sin decimales, y `%` da el resto, 2. Es justo lo que hace falta para repartir 17 galletas entre 5 niños.
Si uno de los dos números es double, la división conserva los decimales: cookies / 5.0 da 3.4. Cuando los dos son variables enteras, `static_cast<double>(cookies)` convierte una de ellas antes de dividir.
Los operadores compuestos abrevian: score += 5 equivale a score = score + 5, score *= 2 multiplica y score++ suma uno. Los comentarios muestran el valor tras cada paso: 15, 30 y 31.
`<cmath>` trae las funciones matemáticas: std::sqrt (raíz cuadrada, aquí la hipotenusa de un triángulo de lados 3 y 4), std::pow (potencia), std::round, std::floor y std::ceil (redondear al más cercano, hacia abajo y hacia arriba) y std::abs (valor absoluto).
Al final se calcula el área de una pizza de 30 cm con π·r². C++17 no incluye una constante π estándar, así que el ejemplo la define con const double pi.
Código · main.cpp
#include <cmath>#include <iostream>int main() { // With two ints, / is integer division and % gives the remainder. int cookies = 17, children = 5; std::cout << "Each child gets " << cookies / children << " cookies\n"; std::cout << "Left over: " << cookies % children << '\n'; // If one side is a double, the result keeps the decimals. std::cout << "Exact share: " << cookies / 5.0 << '\n'; // static_cast converts a value to another type. std::cout << "Average: " << static_cast<double>(cookies) / children << '\n'; int score = 10; // compound operators: += -= *= /=, and ++ score += 5; // 15 score *= 2; // 30 score++; // 31 std::cout << "Score: " << score << '\n'; // <cmath> brings the maths functions. double a = 3.0, b = 4.0; std::cout << "Hypotenuse: " << std::sqrt(a * a + b * b) << '\n'; std::cout << "2 to the 10th: " << std::pow(2, 10) << '\n'; std::cout << "round(7.5): " << std::round(7.5) << ", floor(7.5): " << std::floor(7.5) << ", ceil(7.2): " << std::ceil(7.2) << '\n'; std::cout << "abs(-12.5): " << std::abs(-12.5) << '\n'; // Area of a pizza 30 cm across. const double pi = 3.14159265358979; double radius = 15; std::cout << "Pizza area: " << pi * std::pow(radius, 2) << " cm2\n"; return 0;}Salida · c++ -std=c++17 main.cpp -o main && ./main
Each child gets 3 cookies Left over: 2 Exact share: 3.4 Average: 3.4 Score: 31 Hypotenuse: 5 2 to the 10th: 1024 round(7.5): 8, floor(7.5): 7, ceil(7.2): 8 abs(-12.5): 12.5 Pizza area: 706.858 cm2
Para recordar
- Entre enteros,
/descarta los decimales y%da el resto. - Con un
doubleen la operación, el resultado tiene decimales. static_cast<double>(x)convierte un valor de tipo.+=,-=,*=,/=y++abrevian las operaciones.<cmath>:sqrt,pow,round,floor,ceil,abs.
Ejercicio
Calcule cuántas cajas de 12 huevos se llenan con 150 huevos, cuántos sobran y cuántas cajas hacen falta para guardarlos todos (pista: std::ceil(150 / 12.0)).