我正在编写一个程序来计算一条线的斜率并显示它。我在几乎所有这些行上都收到以下错误:“错误:类型的无效操作数â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;
}
答案 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调用,以确保获得预期的结果。