koala написав:Перечитайте завдання: y=х/2 - це лінія, що обмежує область, у якій лежать точки, а не їхнє ГМТ. Ба більше, якщо точки на одній прямій, то там прямо вказано, що це треба виявляти, а нащо виявляти те, що задане умовою?
тоді ще простіше. Треба перевіряти по х діапазон -2,68...2,68, а по y - -1,34...0, а не займатися перевіркою суми квадратів, і при введенні значень вказувати діапазон.
І тоді виходить щось таке
#include <stdio.h>
#include <math.h>
#include <locale.h>
int main()
{
setlocale(LC_CTYPE, "ukr");
float x1, x2, x3, y1, y2, y3;
printf("ЛІМІТИ Х -2,68...2,68 \n");
printf("ЛІМІТИ Y -1.34...0.0 \n");
printf("Введіть координату А:x ");
scanf_s("%f", &x1);
if (x1 < -2.681 || x1 > 2.681)
{
printf("точка поза зоною\n");
return 0;
}
printf("Введіть координату А:y ");
scanf_s("%f", &y1);
if (y1 < -1.341 || y1 > 0.1)
{
printf("точка поза зоною\n");
return 0;
}
printf("А( %f , %f)\n",x1,y1);
printf("Введіть координату B:x ");
scanf_s("%f", &x2);
if (x2 < -2.681 || x2 > 2.681)
{
printf("точка поза зоною\n");
return 0;
}
printf("Введіть координату B:y ");
scanf_s("%f", &y2);
if (y2 < -1.341 || y2 > 0.1)
{
printf("точка поза зоною\n");
return 0;
}
printf("B( %f , %f)\n", x2, y2);
printf("Введіть координату C:x ");
scanf_s("%f", &x3);
if (x3 < -2.681 || x3 > 2.681)
{
printf("точка поза зоною\n");
return 0;
}
printf("Введіть координату C:y ");
scanf_s("%f", &y3);
if (y3 < -1.341 || y3 > 0.1)
{
printf("точка поза зоною\n");
return 0;
}
printf("C( %f , %f)\n", x3, y3);
float a, b, c, p, S, P;
a = sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1)));
b = sqrt(((x3 - x2) * (x3 - x2)) + ((y3 - y2) * (y3 - y2)));
c = sqrt(((x1 - x3) * (x1 - x3)) + ((y1 - y3) * (y1 - y3)));
printf("a = %f, b = %f, c = %f\n", a, b, c);
p = (a + b + c) * 0.5;
printf("p = %f\n", p);
S = sqrt(p * (p - a) * (p - b) * (p - c));
if (S <= 1e-10)
{
printf("точки на одній прямій\n");
return 0;
}
P = a + b + c;
printf("S = %f, P = %f\n", S, P);
return 0;
}