Glad that hiddpolen helped you solve your problem.
Anyway, one comment on the condition.
return !(a+b<c || b+c<a || a+c<b || a == 0 || b == 0 || c == 0);
This is actually the same as what I suggested earlier (add the = sign).
return !(a+b<=c || b+c<=a || a+c<=b);
The reason is whenever a side of 3 points is 0, other 2 sides will always be the same regardless. I am not saying that doing the before is wrong. It is just a way of thinking when you do programming. It just make the code look cleaner and more succinct.