Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27

Даны целые числа. Выяснить, найдутся ли среди точек четыре таких, которые являются вершинами квадрата

26.10.2010, 21:34. Показов 3537. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны целые числа x1, y1, x2, y2, ...xn, yn.Выяснить, найдутся ли среди точек с координатами (x1;y1), (x2;y2),...(xn;yn) четыре таких, которые являются вершинами квадрата.Определить подпрограммы вычисления расстояния между 2-мя точками, определения взаимного расположения прямых и другие, необходимые для решения.
Решение на С++ должно быть, не получается.....
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2010, 21:34
Ответы с готовыми решениями:

Массив: Выяснить, найдутся ли среди точек с координатами х1...х15, у1...у15 четыре таких, которые являются вершинами квадрата.
Выяснить, найдутся ли среди точек с координатами х1...х15, у1...у15 четыре таких, которые являются вершинами квадрата.

Даны координаты (x1,y1).(xn,yn), выяснить найдутся ли четыре таких, которые являются вершинами квадрата
Даны целые числа x1,y1, x2, y2,..., xn, yn. Выяснить, найдутся ли среди точек с координатами (x1,y1),(x2,y2),...,(xn,yn) четыре таких,...

Выяснить, найдутся ли среди точек такие, которые являются вершинами квадрата
Даны N точек на плоскости(N>=4). Выяснить, найдутся ли среди этих точек такие, которые являются вершинами квадрата. Найти стороны этого...

13
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
28.10.2010, 20:28  [ТС]
Напишите пожалуйста используя синтаксис типа библиотек <stdio.h> и printf и scanf....f то я только начинающий и программирую на версии С++ 3.1

Добавлено через 2 часа 17 минут
Точнее мне нужноименно на чистом СИ...
0
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
28.10.2010, 20:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <math.h>
 
struct POINT
{
    int x, y;
};
 
struct LINE
{
    POINT p1, p2;
};
 
struct QUARE
{
    POINT topLeft, bottomRight;
};
 
//Растояние между точками
float distance( POINT p1, POINT p2)
{
    return sqrt( (p2.x - p1.x)*(p2.x - p1.x) + (p2.y - p1.y)*(p2.y - p1.y) );
};
 
//проверка паралельности прямых
bool parallel(LINE l1, LINE l2)
{
    bool p;
    //A1*B2-A2*B1
    p = (l1.p1.y - l1.p2.y)*(l2.p2.x - l2.p1.x) - (l2.p1.y - l2.p2.y)*(l1.p2.x - l1.p1.x);
    return p?false:true;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    return 0;
}
Это начало
про линии можешь почитать на
http://ru.wikipedia.org/wiki/Прямая

квадрат чет пока не знаю
1
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
28.10.2010, 21:12  [ТС]
Спасибо...напиши про квадраты если что еще....
0
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
28.10.2010, 21:32
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//проверка квадрата
/*
   tl _____ tr
     |       |
     |____|
   bl         br
*/
bool isquare(POINT tl, POINT bl, POINT br, POINT tr)
{
    if( tl.x!=tr.x && bl.x!=br.x ) return false;
    if( tl.y!=bl.y && tr.y!=br.y ) return false;
    return true;
};
можно так проверить

Добавлено через 4 минуты
на растояния надо проверить стороны между собой.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
bool isquare(POINT tl, POINT bl, POINT br, POINT tr)
{
        if( tl.x!=tr.x && bl.x!=br.x ) return false;
        if( tl.y!=bl.y && tr.y!=br.y ) return false;
        if( distance(tl, tr)!=distance(tl, bl) ) return false;
        return true;
};
1
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
30.10.2010, 00:25  [ТС]
int _tmain(int argc, _TCHAR* argv[]) а что это значит?Я про структуры понял и программа впринципе понятна, только на досе она выдает синтаксические ошибкки и в выше указанной строке тоже, и что она значит...?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.10.2010, 00:57
Berens, int argc - колличество аргументов коммандной строки
argv - сами аргументы
_TCHAR - использует unicode, если он включен или просто char если выключен
1
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
30.10.2010, 01:07  [ТС]
В данном контексте не понимаю как он используется....
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.10.2010, 02:29
Berens, Никак. Абсолютно. Вообще это используется, чтобы вводить аргументы с коммандной строки.
1
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
30.10.2010, 07:38  [ТС]
А здесь его не нужно заменить или просто выкинуть можно?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.10.2010, 14:16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
//////////////////////////////////////////////////////////////////////////////////////
//Даны целые числа x1, y1, x2, y2, ...xn, yn.Выяснить, найдутся ли среди точек 
//с координатами (x1;y1), (x2;y2),...(xn;yn) четыре таких, которые являются 
//вершинами квадрата.Определить подпрограммы вычисления расстояния между 2-мя точками, 
//определения взаимного расположения прямых и другие, необходимые для решения.
//////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <iterator>
#include <set>
//////////////////////////////////////////////////////////////////////////////////////
struct  T_int_point
{
    int X_;
    int Y_;
    //--------------------------------------------------------------------------------
    T_int_point(int X, int Y) : X_(X), Y_(Y)
    {}
    //--------------------------------------------------------------------------------
    T_int_point  operator+(T_int_point  p) const
    {
        int  X_res = X_ + p.X_;
        int  Y_res = Y_ + p.Y_;
        return  T_int_point(X_res, Y_res);
    }
    //--------------------------------------------------------------------------------
    T_int_point  operator-(T_int_point  p) const
    {
        int  X_res = X_ - p.X_;
        int  Y_res = Y_ - p.Y_;
        return  T_int_point(X_res, Y_res);
    }
    //--------------------------------------------------------------------------------
    void  print() const
    {
        std::cout << "("
                  << X_
                  << ", "
                  << Y_
                  << ")";
    }
    //--------------------------------------------------------------------------------
    bool  operator< (T_int_point  p) const
    {
        return  X_ == p.X_ ? Y_ < p.Y_ : X_ < p.X_;
    }
};
//////////////////////////////////////////////////////////////////////////////////////
typedef  std::set<T_int_point>   T_int_points;
typedef  std::set<T_int_points>  T_squares;
//////////////////////////////////////////////////////////////////////////////////////
T_int_point  vect(const T_int_point  A, const T_int_point  B)
{
    return  B - A;
}
//////////////////////////////////////////////////////////////////////////////////////
int dist_a_square(const T_int_point  A, const T_int_point  B)
{
    T_int_point  vect_AB = vect(A, B);
    return  vect_AB.X_ * vect_AB.X_ + vect_AB.Y_ * vect_AB.Y_;
}
//////////////////////////////////////////////////////////////////////////////////////
void  print_points_forming_squares(const T_int_points&  int_points)
{ 
    T_squares  squares;
    //Перебираем все сочетания по две точки в поисках гипотенузы 
    //прямоугольного треугольника:
    for(T_int_points::const_iterator  A_hip_it = int_points.begin(); 
        A_hip_it != int_points.end(); ++A_hip_it)
    {
        for(T_int_points::const_iterator  B_hip_it = A_hip_it; 
            B_hip_it != int_points.end(); ++B_hip_it)
        {
            if(B_hip_it == A_hip_it)
            {
                continue;
            }
            //Перебираем все точки множества в поисках вершины
            //для предполагаемой гипотенузы прямоугольного треугольника.
            for(T_int_points::const_iterator  C_it = int_points.begin();  
                C_it != int_points.end(); ++C_it)
            {
                if(    C_it == A_hip_it
                    || C_it == B_hip_it)
                {
                    continue;
                }
                //Проверяем, образуют ли точки равнобедренный 
                //прямоугольный треугольник с гипотенузой AB.
                int AB_hip_len2 = dist_a_square(*A_hip_it, *B_hip_it);
                int AC_cat_len2 = dist_a_square(*A_hip_it, *C_it);
                int BC_cat_len2 = dist_a_square(*B_hip_it, *C_it);
 
                if(AC_cat_len2 == BC_cat_len2
                   && AB_hip_len2 == AC_cat_len2 + BC_cat_len2)
                {
                    T_int_point  D = *C_it + vect(*C_it, *B_hip_it) + vect(*C_it, *A_hip_it);                    
                    //Если точка, дополняющая прямоугольный 
                    //треугольник до квадрата существует:
                    if(int_points.find(D) != int_points.end())
                    {
                        T_int_points  square;
                        square.insert(*A_hip_it);                        
                        square.insert(*B_hip_it);
                        square.insert(*C_it);
                        square.insert(D);
 
                        squares.insert(square);
                    }
                }
            }
        }
    }
 
    std::cout << (squares.empty() 
                      ? "Нет вершин квадратов."
                      : "В данном множестве точек являются вершинами квадратов:")
              << std::endl;
 
    //Печатаем все квадраты из squares:   
    for(T_squares::iterator  square_it = squares.begin(); 
        square_it != squares.end(); ++square_it)
    {
        std::cout << "квадрат № "                  
                  << std::distance(squares.begin(), square_it) + 1
                  << "\t\t";
        for(T_int_points::const_iterator  vertice_it = square_it->begin(); 
            vertice_it != square_it->end(); ++vertice_it)
        {
            
            vertice_it->print();
            std::cout << "    ";
        }
        std::cout << std::endl
                  << std::endl
                  << std::endl;
    }    
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const int  POINTS_IN_SQUARE = 4;
    int  n;
    do
    {
        std::cout << "Введите количество точек >= "
                  << POINTS_IN_SQUARE
                  << ": ";
        std::cin >> n;
    }while(n < POINTS_IN_SQUARE);
    
    std::cout << "Введите целые координаты "
              << n
              << " различных точек: "
              << std::endl;
 
    T_int_points  int_points;
    do
    {
        std::cout << "X" 
                  << int_points.size() + 1 
                  << " = ";
        int x = 0;
        std::cin >> x;
 
        std::cout << "Y"
                  << int_points.size() + 1 
                  << " = ";
        int y = 0;
        std::cin >> y;
        std::cout << std::endl;
        int_points.insert(T_int_point(x, y));
    }while(static_cast<int>(int_points.size()) < n);
 
    print_points_forming_squares(int_points);
}
1
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
30.10.2010, 21:07  [ТС]
Спасибо но я ж уточнил поом что на чистом СИ мне надо
0
1 / 1 / 1
Регистрация: 26.10.2010
Сообщений: 27
01.11.2010, 08:41  [ТС]
И если не трудно, можно составить блок схему, но по решению на СИ а не на СИ++....
0
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 8
11.11.2011, 13:01
Мне нужно решить подобную задачу на прологе: Даны целые числа х1,у1, х2,у2, ... хn,уn. Выяснить, найдуться ли среди точек с координатами (х1,у1)...(хn,уn) четыре таких, которые являются вершинами квадрата. помогите пожалуйста!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2011, 13:01
Помогаю со студенческими работами здесь

Выбрать из точек четыре разные, которые являются вершинами квадрата наибольшего периметра
Задано множество точек на плоскости. Выбрать из низ четыре разные точки, которые являются вершинами квадрата наибольшего периметра. (Т.А)

Выбрать из заданных точек четыре различные точки, которые являются вершинами квадрата наибольшего периметра
Используя библиотеку glut-3.7.6,написать программу,решающую задачу: На плоскости задано множество точек. Выбрать из них четыре...

Выбрать четыре точки, которые являются вершинами квадрата наибольшего периметра
Задано множество точек на плоскости. Выбрать из них четыре разных точки, которые являются вершинами квадрата наибольшего периметра. Кто...

Выберите четыре разные точки, которые являются вершинами квадрата наибольшего периметра
Задание: Задано множество точек на плоскости. Выберите из них четыре разные точки, которые являются вершинами квадрата наибольшего...

Даны целые положительные числа аь а2,., а„. Найти среди них те, которые являются квадратами некоторого числа т
Упорядочить по возрастанию элементы каждой строки мат рицы размером пхт. Дана строка. Подсчитать количество букв к в последнем ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru