Определить, лежат ли точки на одной прямой - C (СИ) (79191)
Формулировка задачи:
int main(int argc, char** argv) {
int x1, y1, x2, y2, x3, y3;
int d1, d2, d3;
printf("Координаты точки A:\n");
if (scanf("%d%d", &x1, &y1) != 2) {
printf("Неверный ввод.\n");
return 0;
}
printf("Координаты точки В:\n");
if (scanf("%d %d", &x2, &y2) != 2) {
printf("Неверный ввод.\n");
return 0;
}
printf("Координаты точки C:\n");
if (scanf("%d %d", &x3, &y3) != 2) {
printf("Неверный ввод.\n");
return 0;
}
if (((x1 - x2) == (y2 - y1))) {
printf("Точки совпадают.\n");
return 0;
} else if (((x2 - x3) == (x3 - y2))) {
printf("Точки совпадают.\n");
return 0;
} else if (((x1 - x3) == (y3 - y1))) {
printf("Точки совпадают.\n");
return 0;
}
d1 = sqrt(((x1 * x1) + (x2 * x2) - 2 * x1 * x2) + ((y1 * y1) + (y2 * y2) - 2 * y1 * y2));
d2 = sqrt(((x1 * x1) + (x3 * x3) - 2 * x1 * x3) + ((y1 * y1) + (y3 * y3) - 2 * y1 * y3));
d3 = sqrt(((x2 * x2) + (x3 * x3) - 2 * x2 * x3) + ((y2 * y2) + (y3 * y3) - 2 * y2 * y3));
double z1 = (double)((y3 * x2)-(y3 * x1)-(y1 * x2)+(y1 * x1));
double z2 = (double)((y2 * x3)-(y2 * x1)-(y1 * x3)+(y1 * x1));
if (z1 == z2)
printf("Точки лежат на одной прямой.\n"); {
if ((d1 > d2) && (d2 > d3))
printf("Между А и С точка B.\n");
if ((d1 > d3) && (d3 > d2))
printf("Между А и В точка C.\n");
if ((d2 > d1) && (d1 > d3))
printf("Между В и С точка A.\n");}
else {
printf("Точки не лежат на одной прямой.\n");
}
return (EXIT_SUCCESS);
}Решение задачи: «Определить, лежат ли точки на одной прямой»
textual
Листинг программы
if (z1 == z2){
printf("Точки лежат на одной прямой.\n");
if ((d1 > d2) && (d2 > d3))
printf("Между А и С точка B.\n");
if ((d1 > d3) && (d3 > d2))
printf("Между А и В точка C.\n");
if ((d2 > d1) && (d1 > d3))
printf("Между В и С точка A.\n");}
else {
printf("Точки не лежат на одной прямой.\n");
}