hola...
primero... no mezcles librerías standard de c++ con las de c.. usa siempre o unas u otras...
#include <cstdio>
#include <cstdlib>
#include <cmath>
a tu error lo que dice
kaiserr es cierto... el calculo está malo... recomiendo los cálculos hacerlos por partes para que tengas una buena legibilidad y usar variables tan legibles como puedas para que el código sea fácil de interpretar...
creo que esto no solo resuelve el problema, sino que ayuda a leer el código mucho veces mejor... al final para el compilador va a ser idéntico...
void calculo(){
float x = d1;
float y = h - C - (d1 / 2);
float z = d2;
float k = d3 + (d2 / 2) - C;
float j = d3;
float p = C+(d3/2);
x = pow(x, 3);
y = pow(y, 2);
z = pow(z, 3);
k = pow(k, 2);
j = pow(j, 3);
p = pow(p, 2);
I = b1 * x / 12;
I += A1 * y;
I += b2 * z / 12;
I += A2 * k;
I += b3 * j /12;
I += A3*p;
C = A1 * (h - d1 / 2);
C += A2 * (d3 + d2 / 2);
C += A3 * d3 / 2;
C /= A1 + A2 + A3;
}
(sabiendo que primero se divide y multiplica, después se suma y resta)
lo que dice
Stakewinner00 es muy cierto... no es buena practica hacer todo en variables globales... eso se guarda para cuando no hay más solución práctica, sin contar que la linea 7 es terrible...
float d2=(h-d1-d3),A1=(b1*d1),A2=(b2*d2),A3=(b3*d3);
no le has dado ningún valor a las variables... va a hacer calculos con la basura que consiga en la ram
es como que lleges a alguien y le digas "si me dices cuanto es A*B + C, te doy 100$" y despues de decirle "te equivocaste A era 1, B era 1 y C era 0"