Определить, можно ли по заданным точкам построить прямоугольник - C (СИ)
Формулировка задачи:
Похожая тема была, но там ничего не ответили.
Проблема еще в том, что если глупый пользователь вместе цифр вводит буквы и/или неправильное количество координат, то умная программа ему пишет, что он чтото сделал не так.
Всем большое спасибо!
int main(int argc, char** argv) {
double x1,x2,x3,x4,y1,y2,y3,y4;
printf("Koordinaty #1:\n");
if ( scanf("%lf %lf",&x1,&y1)!=2)
{
printf("Wrong.\n");
return 1;
}
printf("Koordinaty #2:\n");
if ( scanf("%lf %lf",&x2,&y2)!=2)
{
printf("Wrong.\n");
return 1;
}
printf("Koordinaty #3:\n");
if ( scanf("%lf %lf",&x3,&y3)!=2)
{
printf("Wromg.\n");
return 1;
}
printf("Koordinaty #4:\n");
if ( scanf("%lf %lf",&x4,&x4)!=2)
{
printf("Wrong.\n");
return 1;
}
if ((x4-x1)*(x1-x2)+(y1-y2)*(y4-y1)==0 && (x1-x2)*(x3-x2)+(y1-y2)*(y3-y2)==0 && (x4-x3)*(x4-x1)+(y4-y3)*(y4-y1)==0)
printf ("Da.\n");
else
printf("Net.\n");
return 0;
}Решение задачи: «Определить, можно ли по заданным точкам построить прямоугольник»
textual
Листинг программы
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b=sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2));
c=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
if (b-c==0 && a<b)
printf ("Da.\n");
else
Объяснение кода листинга программы
- Сначала в коде вычисляются длины сторон прямоугольника по формуле: a = sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2)); b = sqrt((x4-x2)(x4-x2)+(y4-y2)(y4-y2)); c = sqrt((x1-x3)(x1-x3)+(y1-y3)(y1-y3));
- Затем проверяется условие b-c == 0 и a < b. Если это условие выполняется, то в консоль выводится сообщение
Da.. В противном случае выводится сообщениеNe..