Код должен быть такой : Но ошибка в рядке - F = log10(p(x)) - log10(x) * log10(y) / pow(tan(p(y),1/3) - sqrt(p*z);
#include <iostream>
#include <math.h>
using namespace std;
const float a=8.95;
#define p(k) pow((k+a),4) / pow(a*k+1,1/4) * a - k );
int main()
{
double x,y,z,F;
cout<<"x="; cin>>x;
cout<<"y="; cin>>y;
cout<<"z="; cin>>z;
F = log10(p(x)) - log10(x) * log10(y) / pow(tan(p(y),1/3) - sqrt(p*z);
cout<<"F="<<F<<endl;
system ("pause");
return 0;
}

Наверное потому что результат 1/4 будет 0, а не как ожидается - 0.25
проверь степень в define.
Допиши нолик или явно преобразуй тип знаменателя или числителя в float / double
То же самое для 1/3.
В выражении sqrt(p*z) - почему в скобках не p(z) ?
#include <iostream>
#include <iomanip>
using namespace std;
double p(double k) {
static const auto a = 8.95;
auto x = a * k + 1.0;
if (x > 0) return pow(k + a, 4) / pow(x, 0.25) * a - k;
return -1.0;
}
double f(double x, double y, double z) {
static const char* ia = "Invalid Argument!";
auto pz = p(z);
if (pz < 0) puts(ia);
else {
constexpr auto pi = 3.14159265358979323;
constexpr auto pi_2 = pi / 2.0;
constexpr auto pi3_2 = 3.0 * pi / 2.0;
constexpr auto eps = 1e-15;
auto py = p(y);
if (fabs(py - pi_2) < eps || fabs(py - pi3_2) < eps) puts(ia);
else {
auto tg = tan(py);
if (tg < 0) puts(ia);
else return (log10(p(x)) - log10(x) * log10(y)) / cbrt(tg) - pz;
}
}
return numeric_limits<double>::max();
}
double real(const char* msg, double x = -numeric_limits<double>::max()) {
double value = x;
while (value <= x) {
cout << msg;
cin >> value;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
return value;
}
int main() {
auto x = real("x: ", 0);
auto y = real("y: ", 0);
auto z = real("z: ");
auto f_xyz = f(x, y, z);
if (f_xyz != numeric_limits<double>::max()) {
cout << "F: " << f_xyz << '\n';
}
system("pause > nul");
}
1. Использовать такие дефины - дурной тон. p - становится дефином (k) уходит в определение и сама переменная k не определена.
2. Выражение в дефине содержит лишнюю скобку в конце.
3. tan() принимает одно значение, у вас два.
4. не хватает скобки в формуле F.
5. Вы наставили столько скобок, что сами запутались. Разбейте выражение на отдельные части.
Рекомендую p(k) оформить функцией и исправить ошибку в tan()