la cosa es que es el tipico problema del casteo de tipos...el lio es 1 es un entero al igual que 3... entonces el resultado es una valor entero y 1/3=0
para forzar a que sean flotantes tienes 2 vías principales
o fuerzas los tipos por un casting
cout << (float) 1/3 * PI * pow(radio,2) * altura << endl;
eso hará que la operacion 1/3 sea tratada como flotante
o haces la operacion con flotantes
cout << 1.0/3 * PI * pow(radio,2) * altura << endl;
o
cout << 1.0/3.0 * PI * pow(radio,2) * altura << endl;
ambos casos es lo mismo, ya es cosa de gustos