• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

вершины квадрата

  • Автор темы dimon131
  • Дата начала
D

dimon131

Даны числа (x,y)...(xn,yn). Узнать, если среди них вершины квадрата. Если да, вывести их.



P.S. Не могу понять как написать алгоритм, но идеи как решить есть.
 
D

dimon131

C++:
#include<conio.h>
#include<stdio.h>
#define N 2
int main()
{
int x,y;

printf("Введите x и y\n");
for(i=0; i<N; i++)
scanf("%d%d",&x,&y); //Вводим вершины
for(i=0; i<N; i++)
{
if(fabs(i,i-1)==fabs(i-1,i-2))		/*Отнимаем между собой две координаты и сравниваем
их модули. Если они равны, выводим вершины квадрата*/
printf("Вершины квадрата есть");
printf("%d%d",x,y);
else
printf("Вершин нет");
}
getch();
return 0;
}
 
L

lazybiz

Алгоритм у тебя в корне не верный. Для начала тебе нужен массив структур типа point, которая состоит из двух координат (но можно и по-другому). Если меня никто не опередит, или ты не додумаешься сам о чем я говорю (в чем я конечно сомневаюсь), то я тебе готов помочь:rolleyes:
 
A

acorn

Как я понимаю, в квадрате четыре вершины... так что нужно взять вершина A и искать вершину B, которая лежит на той же линии, параллельной одной из осей координат (допустим, ось x), потом для вершины B по оси Y, после чего для вершины C по оси X и проверяем находятся ли вершины D и A на одной линии, параллельной оси Y. Алгоритм совершенно неоптимален и могут быть недочеты.
 
H

hosm

Acorn а зачем к осям привязываться?
что, если квадрат повернуть на 45°, он сразу перестает быть квадратом?
dimon131 Проверки одинаковой длины сторон недостаточно, ибо не каждый ромб будет квадратом.
 
I

ierofant

Проверки одинаковой длины сторон недостаточно, ибо не каждый ромб будет квадратом.
Ну если стороны параллельны осям, то достаточно. Вообще обычно в задачах у студентов принимают такое условие, чтобы сильно не усложнять задание.
 
L

lazybiz

Acorn а зачем к осям привязываться?
что, если квадрат повернуть на 45°, он сразу перестает быть квадратом?
Лен) Я думаю там это не предусмотрено) Алгоритм наипростейший. Acorn, кстати, двигался в правильном направлении. Нужно сравнивать по осям, горизонтальным и вертикальным.
К примеру:
C++:
point  a, b;
for ( i = 0; i < n_points; i++ ) {
a = pts[i];
for ( j = 0; j < n_points; j++ ) {
b = pts[j];
if ( abs( a.x - b.x ) == abs( a.y - b.y ) ) {
// вывод координат точки
}
}
}
Но это только по двум точкам. Для четырех будет посложнее.
 
A

acorn

OKEN
не подумал про вращение, конец рабочего дня всё-таки :(
..а как насчет того, что у квадрата диагонали равны? всё, решение придумано 100%, реализовывайте сами ;)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!