c++ - 3 个共线点 - 一些错误

标签 c++ struct

谁能告诉我为什么它对输入 0 0 0 0 0 0 不起作用?

struct pPoint
{
    float x, y;
};

struct line
{
    pPoint x1, x2, x3;
};

bool judge(line& x)
{
    if (x.x1.x == x.x2.x == x.x3.x)
        return true;
    else
    {
        if (x.x1.y == x.x2.y == x.x3.y)
            return true;
        else
        {
            float a = (x.x1.y - x.x2.y) / (x.x1.x - x.x2.x);
            float b = x.x1.y - x.x1.x*a;
            if (x.x3.y == a*x.x3.x + b)
                return true;
            return false;
        }
    }
}


int main()
{
    line x;
cin >> x.x1.x >> x.x1.y >> x.x2.x >> x.x2.y >> x.x3.x >> x.x3.y;
cout << (judge(x) ? "YES" : "NO") << "\n";

    return 0;
    }

它检查 3 个点是否共线,它工作正常,但对于输入 0 0 0 0 0 0 它显示 NO 或崩溃,它适用于 1 1 1 1 1 1 等。 当我调试它时,它只是跳过了判断中的第一个if

最佳答案

它不起作用,因为在这一行中:

if (x.x1.x == x.x2.x == x.x3.x)

您首先将 int 与 int x.x1.x == x.x2.x 进行比较,然后将 int 与 bool 进行比较 bool == x.x3.x。

您必须像这样将每个点与其他点进行比较:

if (x.x1.x == x.x2.x && x.x2.x == x.x3.x && x.x1.x == x.x2.x )

如果你在任何地方都改变它,它应该可以工作;)

关于c++ - 3 个共线点 - 一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423792/

相关文章:

c++ - 搜索功能不起作用

c++ - 字符串输入从行首开始并以空格结束

c++ - gdb中的条件显示

c - 在结构体中使用函数指针 - C 编译器

c# - "Can' t 从类型 "Blah"隐式转换为类型 'string'

c - 解构结构体

c++ - Libcurl+QtCreator+debian

c++ - 根据 id 从列表中删除结构

c++ - 无法访问类内的结构成员

c++ - 如何将 QString 拆分成单个字符并创建一个新字符?