DMarlon Studio

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.

C++ · Operaciones y funciones matemáticas en DMarlon Studio: el código del ejemplo y su salida en la terminal

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 double en 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)).