Ошибка "expected primary-expression before';' token"

#include <stdio.h>
#include <cmath>
#define pow(t,r)

using namespace std;

int f1(float y, float x,float t, float r, float pi)
{

    pi = 3.1415;
    t=(-x);
    r=(2);
    cout << "Enter 'x':" << endl;
    cin >> x;
    if(x <= 0){
        y = pow(t,r);
    }
    else if((x<=pi) <= 0){
        y = sin(x);
    }
    else if(x > pi / 2){
        y = 1 + x - pi / 2;
    }
    cout << "y = " << y << endl;
    return (1) ;
}

int f2(float y, float x)
{
    cout << "Enter 'x':" << endl;
    cin >> x;
    if(x < -1){
        y = -5;
    }
    else if(x < 0){
        y = 0;
    }
    else if(x < 1){
        y = x * 5;
    }
    else y = 5;
    cout << "y = " << y << endl;
    return (2) ;
}

int f3(double &x1,double &x2){
    int d=-1;
    if(x1<x2) {
        double d;
        d=x1; x1=x2; x2=d;
        d=1;
    }
    return d>0;
}

Ответы (1 шт):

Автор решения: Harry

Забавно. Работаете с потоками типа cout, а

#include <iostream>

не написали.

Ладно, к делу. Вы объявили

#define pow(t,r)

т.е. сказали препроцессору — если где встретишь в тексте pow(..,..) — выбрось его, замени на пустое место. И препроцессор честно превратил

y = pow(t,r);

в

y = ;

Ну и как компилятору это скомпилировать? Вот он и пожаловался, как смог...

P.S. Еще очень интересно, что вы хотели сказать этим выражением:

if ((x<=pi) <= 0)

А в f3 все, что вы делаете с d внутри if, вы делаете с локальной переменной, так что оптимизированный код вашей функции имеет вид

int f3(double &x1,double &x2){
    return false;
}

Ну, о точности

pi = 3.1415;

просто молчу.

→ Ссылка