Considere o código a seguir:
#include <iostream>
#include <cmath>
using namespace std;
class Esfera {
public:
    float raio;
    float calcularVolume() {
        return (4.0/3.0) * M_PI * pow(raio, 3);
    }
};
int main() {
    Esfera e;
    e.raio = 3;
    cout << e.calcularVolume() << endl;
}
O que este programa imprime?

Passo 1

O programa define uma classe chamada Esfera com um atributo público \text{raio} do tipo \text{float} e um método \text{calcularVolume}() que retorna o resultado de
(4.0/3.0) \times M\_PI \times \text{pow}(\text{raio}, 3).
No \text{main} é criado um objeto e da classe Esfera, atribui-se e.\text{raio} = 3 e imprime-se o resultado de e.\text{calcularVolume}() com
\text{cout} << e.\text{calcularVolume}() << \text{endl};
Informações relevantes dadas pelo código:
  • o raio usado é \text{raio} = 3;
  • o cálculo usa M\_PI para \pi (macro fornecida por muitas implementações de \langle\text{cmath}\rangle);
  • a função retorna \text{float} (mas as operações com constantes de ponto flutuante e \text{pow} usualmente usam dupla precisão internamente);
  • a saída é feita com \text{cout} no formato padrão (precisão padrão de fluxo é 6 algarismos significativos).

Passo 2

A fórmula matemática que corresponde ao que o programa calcula é o volume de uma esfera:
V = \frac{4}{3}\pi r^{3}.
Aqui:
  • V é o volume da esfera;
  • \pi é a constante matemática pi (aproximadamente 3,14159);
  • r é o raio da esfera.
    No código, essa fórmula aparece exatamente como (4.0/3.0) * M\_PI * \text{pow}(\text{raio}, 3). A função \text{pow}(\text{raio},3) calcula r^{3}.

Passo 3

Substituímos r = 3 na fórmula e simplificamos passo a passo:
Primeiro calcule 3^{3}:
3^{3} = 27.
Agora multiplica-se por \dfrac{4}{3}:
\frac{4}{3} \times 27 = 4 \times 9 = 36.
Portanto a expressão inteira fica
V = 36\pi.

Passo 4

Agora avaliamos numericamente usando o valor de \pi. Se usarmos a aproximação usual de \pi fornecida por M\_PI (aproximadamente 3,141592653589793), temos
V \approx 36 \times 3,141592653589793 = 113,09733552923255\ldots

Passo 5

Detalhes práticos sobre o que é realmente impresso:
  • a função membro retorna \text{float}, então o valor será convertido para precisão de ponto flutuante simples antes de ser enviado ao fluxo;
  • o \text{cout} em C++ usa por padrão precisão 6 (seis algarismos significativos) no formato geral, então o número impresso será arredondado para 6 algarismos significativos.
    O valor numérico calculado é \approx 113,0973355, que com 6 algarismos significativos fica escrito como
113,097
(no separador decimal em português usei vírgula).

Passo 6

Observação final de robustez: estou assumindo que M\_PI está disponível no ambiente (gcc/clang definem-no por compatibilidade). Se uma implementação não definir M\_PI, o código nem compilaria; mas o enunciado pediu para assumir o código apresentado, então consideramos M\_PI válido.

Resposta

\,113,097

Exercícios relacionados