Возведение в степень в С++. Нахождение переменной a

Возведение в степень в С++. Нахождение переменной a
Требуется вычислить значение переменной a.
Выражение следующего вида:

Написал программу, результат получаю, но проверил по калькулятору ответ не сходится не понимаю в чем проблема, помогите разобраться пожалуйста.
Результат работы программы: 3
Ответ должен быть 1,97282275085

#include
#include
#include
using namespace std;

int main(){
float a,x=100,y=2;
float var1,var2;
long i;
for (i=0; y<0; i++){
printf("K sozhaleniyu vu vveli nedopustimui Y,poprobuite snova!n");
printf("Vvedite x & ym pri uslovii, 4to y >= 0...n");
scanf("%f %f",&x,&y);
}
var1= (exp((1/3)*log(x/y)));
var2= 2*exp((3/2)*log(y));
a=fabs(var1-var2);
printf("4islo A = %fn",a);
system("pause");
}

  • 1/3 - целочисленное деление, это 0. Если нужна одна треть, то 1.0/3.0 (1./3. тоже пойдет)
  • ого! так сложно =)
  • a=fabs(pow(x/y,1/3)-2*pow(y,3/2)); - и нечего изобретать
  • 1. Лучше поставить в объявлении переменных a, x и y не long, а double
    2. У Вас цикл for (i=0; y<0; i++) не выполнится никогда, потому что Вы ранее проинициализировали y значением 2 (>0)
    3. Причём здесь вообще функция exp, и где abs и pow?
  • Вы забыли про sqrt
  • Интересно, зачем тут экспонента и логарифм?
    Нормально это будет

    #include
    #include
    using namespace std;
    int main(){
    double x,y;
    cout< <"x y ? "; cin>>x>>y;
    cout< < abs(pow(x/y,1./3)-2*pow(y,1.5))<< endl;
    cin.get(); cin.get();}

    А через экспоненту и логарифм

    #include
    #include
    using namespace std;
    int main(){
    double x,y; cout< <"x y ? "; cin>>x>>y;
    cout< < abs(exp(log(x/y)/3)-2*exp(log(y)*1.5))<< endl;
    cin.get(); cin.get();}