C ++无效的操作数错误

时间:2014-04-08 02:16:11

标签: c++

我正在编写一个程序来计算一条线的斜率并显示它。我在几乎所有这些行上都收到以下错误:“错误:类型的无效操作数âdouble(int,int,int,int)â和âintâ到二进制âoperator*â”。我不确定为什么它不会让我乘以int加倍。感谢帮助。

 double figure_slope(int x1, int y1, int x2, int y2)                                                                           
}
 (y1-y2)/(x1-x2);
}

void determine_line(int x1, int y1, int x2, int y2)

{
if (figure_slope == 1 && y1 - figure_slope*x1 == 0)
cout << "Equation: x = " << x1 << endl;
else
if (figure_slope == 0 && y1 - figure_slope*x1 == 0)
  cout << "Equation: y = 0" << endl;
else
  if (figure_slope == 0)
    cout << "Equation: y = " << y1 - figure_slope*x1) << endl;
  else
    if (y1 - figure_slope*x1 == 0)
      cout << "Equation: y = " << figure_slope << "x" << endl;
    else
      if (y1 - figure_slope*x1 < 0)
        cout << "Equation: y = " << figure_slope << "x - " << -(y1 - figure_slope*x1) <<   endl;
      else
        cout << "Equation: y = " << figure_slope << "x + " << y1 - figure_slope*x1 << endl;
}

2 个答案:

答案 0 :(得分:1)

figure_slope正如您使用它只是一个函数指针。您将其定义为接受参数但未通过任何内容。您需要将其称为if (figure_slope(x1, y1, x2, y2) == 0 && ....

此外,figure_slope()返回一个double,但是您正在与int进行比较。这可能不会像你期望的那样起作用。

答案 1 :(得分:1)

double figure_slope(int x1, int y1, int x2, int y2)                                                                           
}
 (y1-y2)/(x1-x2);
}

第2行有一个不正确的}大括号。它还需要“返回”。除此之外,如果要获得浮点结果,则需要将每一侧转换为double类型。

请尝试以下方法:

double figure_slope(int x1, int y1, int x2, int y2){
    return static_cast<double>(y1-y2)/static_cast<double>(x1-x2);
}

除此之外,当您调用该函数时,您需要为其提供参数。由于您将在每个地方使用相同的参数调用它,您可以只调用一次并将结果分配给值。请尝试以下方法:

void determine_line(int x1, int y1, int x2, int y2){
    double figureSlope = figure_slope(x1, y1, x2, y2);
    if(figureSlope == 1 && y1 - figureSlope*x1 == 0)
        cout << "Equation: x = " << x1 << endl;
    else if(figureSlope == 0 && y1 - figureSlope*x1 == 0)
        cout << "Equation: y = 0" << endl;
    else if(figureSlope == 0)
        cout << "Equation: y = " << y1 - figureSlope*x1) << endl;
    else if(y1 - figureSlope*x1 == 0)
        cout << "Equation: y = " << figureSlope << "x" << endl;
    else if(y1 - figureSlope*x1 < 0)
        cout << "Equation: y = " << figureSlope << "x - " << -(y1 - figureSlope*x1) << endl;
    else
        cout << "Equation: y = " << figureSlope << "x + " << y1 - figureSlope*x1 << endl;
}

请注意,在每种情况下,您都要将整数与双精度进行比较。您可能还需要一些static_cast调用,以确保获得预期的结果。