Форум программистов, компьютерный форум CyberForum.ru

Определить, сколько может быть построено квадратов с вершинами в заданых точках - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
13.12.2012, 21:38     Определить, сколько может быть построено квадратов с вершинами в заданых точках #1
Доброго времени суток!

Условие: Пользователь вводит кол-во точек, затем их целочисленные координаты х и у.
Нужно определить сколько может быть построено квадратов с вершинами в этих точках, вывести их кол-во, координаты и номер точек, образ. каждый квадрат.

Я не глуп в C\C++! я не могу понять, чего от меня хотят! препод сам походу не может понять, он ваще бред какой то говорит, когда я подхожу к нему с этим вопросом...

в общем, помогите разобраться друзья, я не прошу мне весь код писать, может намеки какие, я сам напишу. только понять бы нормально...

вот, накидал чуть..ввод кол-ва точек и их координат:
C++
1
2
3
4
5
6
7
8
    printf("Введите кол-во точек(до 10): ");
    int points;
    scanf("%i",&points);
    int x[10],y[10];
    for (int i=0; i<points; i++){
        printf("\nВведите через пробел координаты %iй точки (x y): ",i+1);
        scanf("%i %i",&x[i],&y[i]);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 21:38     Определить, сколько может быть построено квадратов с вершинами в заданых точках
Посмотрите здесь:

C++ Стрелки совершают N выстрелов из пистолета по мишени. Кучность стрельбы может быть описана суммой квадратов отклонений результатов каждого выстрела от
C++ Дана точка A(x; y) на координатной плоскости. Определить, принадлежит ли она треугольнику с вершинами в точках .
C++ Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (1,1) (0,2) (-1,0)
Геометрия (Найти все четырёхугольники, являющиеся выпуклыми, с вершинами в этих точках) C++
Найти треугольник с наибольшей площадью с вершинами в точках заданных координатами (подправить код) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.12.2012, 21:46     Определить, сколько может быть построено квадратов с вершинами в заданых точках #2
Ну если честно то тут удобнее со структурами. Создать структуру точка, структуру вектор( в ней хронятся пары паралельных векторов, в таком примерно формате(точка начала, точка конца), структуру квадрат( в ней хронятся точки квадрата). Ну затем пробегать. Ну записать все в массив точек. Затем перебрать все точки, и заполняем массив векторов, ну затем перебираем массив векторов, на предмет равенства длин, исхода из одной точки и все остальное для квадратов( ну и каунт для их подсчёта)). Примерно так. противные такие задачи, честно скажу!
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
14.12.2012, 05:16  [ТС]     Определить, сколько может быть построено квадратов с вершинами в заданых точках #3
про структуры понял. я и так собирался с ними возиться. не понял следующего:

Цитата Сообщение от Wolkodav Посмотреть сообщение
структуру вектор( в ней хронятся пары паралельных векторов, в таком примерно формате(точка начала, точка конца)
а если всего 3 точки? откуда взять пару параллельных векторов?

и да! я ж верно понял, что вектора ты имеешь ввиду математическую величину, а не контейнеры?

Добавлено через 2 минуты
пока что вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    struct point{//структура для координат точек
        int x;
        int y;
    } iPoint[10];
    struct vector{//ст-ра векторов - расстояние м\у точками ???
        int b_point;//начало вектора
        int e_point;//конец
    };
    struct squares{
        //??
    };
    printf("Введите кол-во точек(до 10): ");
    int points;
    scanf("%i",&points);
    for (int i=0; i<points; i++){
        printf("\nВведите через пробел координаты %iй точки (x y): ",i+1);
        scanf("%i %i",&iPoint[i].x,&iPoint[i].y);
    }
Добавлено через 1 час 9 минут
Wolkodav,
надеюсь иду правильным путем:

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
    struct point{//структура для координат точек
        int x;
        int y;
    } iPoint[10];
    struct vector{//ст-ра векторов - расстояние м\у точками ???
        int begin;//начало вектора
        int end;//конец
        int length;//длинна вектора(из большего - меньшее)
        int amount;//сколько всего таких векторов
        char axis[1];//вдлоль какой оси
    } iVector[10],iamount;
    struct squares{
        //??
    };
    printf("Введите кол-во точек(до 10): ");
    int points;
    scanf("%i",&points);
    for (int i=0; i<points; i++){
        printf("\nВведите через пробел координаты %iй точки (x y): ",i+1);
        scanf("%i %i",&iPoint[i].x,&iPoint[i].y);
    }
    for (int j=0/*для вектора*/, i=0; i<points-1;  i++){
        for (int k=i+1; k<points-1; k++){
            if(iPoint[i].x == iPoint[k].x){
                iVector[j].length=(iPoint[i].y>iPoint[k].y)?(iPoint[i].y-iPoint[k].y):(iPoint[k].y-iPoint[i].y);//вычисляем длинну вектора
                iVector[j].begin=(iPoint[i].y>iPoint[k].y)?iPoint[i].y:iPoint[k].y;//присваиваем начало вектора
                iVector[j].end=(iPoint[i].y<iPoint[k].y)?iPoint[i].y:iPoint[k].y;//конец
                strcpy(iVector[j].axis,"Y");//указываем параллельно какой оси расположен вектор
                j++;
            }
            if(iPoint[i].y == iPoint[k].y){
                iVector[j].length=(iPoint[i].x>iPoint[k].x)?(iPoint[i].x-iPoint[k].x):(iPoint[k].x-iPoint[i].x);
                iVector[j].begin=(iPoint[i].x>iPoint[k].x)?iPoint[i].x:iPoint[k].x;
                iVector[j].end=(iPoint[i].x<iPoint[k].x)?iPoint[i].x:iPoint[k].x;
                strcpy(iVector[j].axis,"X");
                j++;
            }
            iamount.amount=j;
        }
    }
    for (int i=0; i<points; i++){
        printf("%iя точка, координаты - X:%i Y:%i\n",i+1,iPoint[i].x,iPoint[i].y);
    }
    for (int i=0; i<iamount.amount; i++){
        printf("Длинна %iго вектора - %i - его координаты - %c1:%i %c2:%i\n",i+1,iVector[i].length,iVector[i].axis,iVector[i].begin,iVector[i].axis,iVector[i].end);
    }
Добавлено через 7 минут
ввожу четыре точки, где по-сути должно быть 3 вектора. но изза
C++
1
for (int k=i+1; k<points-1; k++)
points-1...один вар-т не рассматривается....как быть?

и еще
C++
1
printf("Длинна %iго вектора - %i - его координаты - %c1:%i %c2:%i\n",i+1,iVector[i].length,iVector[i].axis,iVector[i].begin,iVector[i].axis,iVector[i].end);
я вроде прально вывожу char...а в итоге бред какой то в местах %c...см. скрин
[IMG]см. скрин[/IMG]

Добавлено через 7 минут
предпологаемаая структура квадратов:

C++
1
2
3
4
5
6
7
8
9
struct squares{
        int amount;//кол-во квадратов
        char numbers[4];//номера точек, образ. этот квадрат
        //координаты
        int x1;
        int x2;
        int y1;
        int y2;
    } iSquare[10];
Добавлено через 1 час 54 минуты
и я так понял....сколько будет таких векторов, столько и квадратов. осталось, вроде как, тока точки "достроить"(высчитать их координаты). вот так =)
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.12.2012, 18:51     Определить, сколько может быть построено квадратов с вершинами в заданых точках #4
ну зачем в квадрате интов столько? и зачем там их кол-во, тут логичнее (коли знаком с контейнером) создать контейнер листов, и когда находишь квадрат то добавлять его. И у тебя есть структура точка, вот и используй её. А не инты лепи. Затем паралленость надо смотреть относительно векторов к друг другу, они же там могут быть повёрнуты. Надо вначале создать массив векторов, а потом искать там пары векторов( массив указателей на двух мерный массив, в котором хроняться пары параллелиных)
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
14.12.2012, 22:34  [ТС]     Определить, сколько может быть построено квадратов с вершинами в заданых точках #5
Wolkodav,
ща я допилю свой вар-т и скину код. листы не буду использовать, хочу чеб побольше было писанины, побольше строк.

Добавлено через 1 час 15 минут
вот что я понял...есть вектор - расстояние между двумя точками. если есть этот вектор, то с двух сторон от него(справа/слева или сверху/снизу) есть два квадрата. остальные точки можно расчитать просто с помощью длинны этого вектора.

весь код:
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
    struct point{//структура для координат точек
        int x;
        int y;
    } iPoint[10];
    struct vector{//ст-ра векторов - расстояние м\у точками ???
        int begin;//начало вектора
        int end;//конец
        int line;//отступ от оси, паралельно которой распаложен //new
        int length;//длинна вектора(из большего - меньшее)
        int amount;//сколько всего таких векторов
        char axis[1];//вдлоль какой оси
        char axisLine[1];//перпендикулярно какаой оси //new
    } iVector[10],iVecAmount;
    struct squares{
        int amount;//кол-во квадратов
        char numbers[4];//номера точек, образ. этот квадрат
        //координаты
        point first;
        point second;
        point third;
        point fourth;
    } iSquare[20],iSquAmount;
    printf("Введите кол-во точек(до 10): ");
    int points;
    scanf("%i",&points);
    //заполняем массив точек
    for (int i=0, numb=1; i<points; i++){
        printf("\nВведите через пробел координаты %iй точки (x y): ",i+1);
        scanf("%i %i",&iPoint[i].x,&iPoint[i].y);
        //strcpy(iPoint[i].num,"");
    }
    //заполняем массив векторов
    for (int j=0/*для вектора*/, i=0; i<points-1;  i++){
        for (int k=i+1; k<points-1; k++){
            if(iPoint[i].x == iPoint[k].x){//вдоль y
                iVector[j].length=(iPoint[i].y>iPoint[k].y)?(iPoint[i].y-iPoint[k].y):(iPoint[k].y-iPoint[i].y);//вычисляем длинну вектора
                iVector[j].begin=(iPoint[i].y>iPoint[k].y)?iPoint[i].y:iPoint[k].y;//присваиваем начало вектора
                iVector[j].end=(iPoint[i].y<iPoint[k].y)?iPoint[i].y:iPoint[k].y;//конец
                iVector[j].line=iPoint[i].x;
                strcpy(iVector[j].axis,"y");//указываем параллельно какой оси расположен вектор
                strcpy(iVector[j].axisLine,"x");//указываем перпендикулярно какаой оси расположен вектор
                j++;
            }
            if(iPoint[i].y == iPoint[k].y){//вдоль x
                iVector[j].length=(iPoint[i].x>iPoint[k].x)?(iPoint[i].x-iPoint[k].x):(iPoint[k].x-iPoint[i].x);
                iVector[j].begin=(iPoint[i].x>iPoint[k].x)?iPoint[i].x:iPoint[k].x;
                iVector[j].end=(iPoint[i].x<iPoint[k].x)?iPoint[i].x:iPoint[k].x;
                iVector[j].line=iPoint[i].y;
                strcpy(iVector[j].axis,"x");
                strcpy(iVector[j].axisLine,"y");//указываем перпендикулярно какаой оси расположен вектор
                j++;
            }
            iVecAmount.amount=j;
        }
    }
    //ищем квадраты и заполнем соответствующий массив
    for (int i=0, j=0; i<iVecAmount.amount; i++){
        if (iVector[i].axis == "y"){
            //находим координаты вершин квадрата в след. порядке:
            //1--2
            //|  |
            //4--3
            //влево от вектора
            iSquare[j].first.x=iVector[i].line-iVector[i].length;
            iSquare[j].first.y=iVector[i].begin;
            iSquare[j].second.x=iVector[i].line;
            iSquare[j].second.y=iVector[i].begin;
            iSquare[j].third.x=iVector[i].line;
            iSquare[j].third.y=iVector[i].end;
            iSquare[j].fourth.x=iVector[i].line-iVector[i].length;
            iSquare[j].fourth.y=iVector[i].end;
            //находим точки, образовавшие данный квадрат
            //?????
            j++;
            //вправо от вектора
            iSquare[j].first.x=iVector[i].line;
            iSquare[j].first.y=iVector[i].begin;
            iSquare[j].second.x=iVector[i].line+iVector[i].length;
            iSquare[j].second.y=iVector[i].begin;
            iSquare[j].third.x=iVector[i].line+iVector[i].length;
            iSquare[j].third.y=iVector[i].end;
            iSquare[j].fourth.x=iVector[i].line;
            iSquare[j].fourth.y=iVector[i].end;
            //????
            j++;
        }
        if (iVector[i].axis == "x"){
            //вверх от вектора
            iSquare[j].first.x=iVector[i].begin;
            iSquare[j].first.y=iVector[i].line+iVector[i].length;
            iSquare[j].second.x=iVector[i].end;
            iSquare[j].second.y=iVector[i].line+iVector[i].length;
            iSquare[j].third.x=iVector[i].end;
            iSquare[j].third.y=iVector[i].line;
            iSquare[j].fourth.x=iVector[i].begin;
            iSquare[j].fourth.y=iVector[i].line;
            //находим точки, образовавшие данный квадрат
            //?????
            j++;
            //вниз от вектора
            iSquare[j].first.x=iVector[i].begin;
            iSquare[j].first.y=iVector[i].line;
            iSquare[j].second.x=iVector[i].end;
            iSquare[j].second.y=iVector[i].line;
            iSquare[j].third.x=iVector[i].end;
            iSquare[j].third.y=iVector[i].line-iVector[i].length;
            iSquare[j].fourth.x=iVector[i].begin;
            iSquare[j].fourth.y=iVector[i].line-iVector[i].length;
            //????
            j++;
        }
        iSquAmount.amount=j;
    }
    for (int i=0; i<points; i++){
        printf("%iя точка, координаты - X:%i Y:%i\n",i+1,iPoint[i].x,iPoint[i].y);
    }
    for (int i=0; i<iVecAmount.amount; i++){
        printf("Длинна %iго вектора - %i - его координаты - %c1:%i %c2:%i %c2:%i\n",i+1,iVector[i].length,iVector[i].axis,iVector[i].begin,iVector[i].axis,iVector[i].end, iVector[i].axisLine, iVector[i].line);
    }
    for (int i=0; i<iSquAmount.amount; i++){
        printf("координаты %iго квадрата:\n");
        printf("\tX1:%i Y1:%i; X2:%i Y2:%i;\tX3:%i Y3:%i; X4:%i Y4:%i",iSquare[i].first.x,iSquare[i].first.y,iSquare[i].second.x,iSquare[i].second.y,iSquare[i].third.x,iSquare[i].third.y,iSquare[i].fourth.x,iSquare[i].fourth.y);
    }
Добавлено через 11 минут
не правильно как то тут заполняется:

C++
1
2
3
strcpy(iVector[j].axis,"x");
...
strcpy(iVector[j].axis,"y");
Добавлено через 1 минуту
выводит непонятно что, и изза этого не верно проверяется условие:
C++
1
2
3
iVector[i].axis == "x")
...
(iVector[i].axis == "y")
Добавлено через 33 минуты
вместо:
C++
1
strcpy(iVector[j].axis,"x");
сделал:
C++
1
iVector[j].axis[0]='x';
теперь все ок. квадраты есть!))
осталось с этим разобраться:

Цитата Сообщение от zerO2hacK Посмотреть сообщение
ввожу четыре точки, где по-сути должно быть 3 вектора. но изза Код C++1
for (int k=i+1; k<points-1; k++)points-1...один вар-т не рассматривается....как быть?
Добавлено через 1 час 0 минут
все! нашел ошибку
C++
1
2
    for (int j=0/*для вектора*/, i=0; i<points-1;  i++){
        for (int k=i+1; k<points-1; k++){
я зачем то и во втором цикле -1 поставил. убрал. все норм ищет)

Добавлено через 1 минуту
теперь осталось только выявить точки, с помощью которых был образован квадрат. пока что голова вообще не соображает.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.12.2012, 23:14     Определить, сколько может быть построено квадратов с вершинами в заданых точках #6
Ну ты выявил квадрат, это сбор векторов, а в векторах хранятся начало и конец вектора, вот тебе и точки)
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
15.12.2012, 18:58  [ТС]     Определить, сколько может быть построено квадратов с вершинами в заданых точках #7
Цитата Сообщение от Wolkodav Посмотреть сообщение
векторах хранятся начало и конец вектора
начало и конец - это только координаты вектора, то бишь координаты точек. а номера точек, я так понял, имеется ввиду порядок, в каком вводишь вначале программы. у меня есть одна идея, как напишу, код сюда.

Добавлено через 1 час 12 минут
вот и все

добавил несколько переменых во все структуры: в точки - номер точки; в вектора - номера точек, образ. данный вектор; в квадраты - те же точки, равные точкам, образ. вектор, образовавший два квадрата.

весь код:
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
#include "stdafx.h"
#include <locale.h>
#include <iostream>
 
void main()
{
    setlocale(0,"");
    struct point{//структура для координат точек
        int numb;//номер точки
        int x;
        int y;
    } iPoint[10];
    struct vector{//ст-ра векторов - расстояние м\у точками
        int begin;//начало вектора
        int end;//конец
        int line;//отступ от оси, паралельно которой распаложен //new
        int length;//длинна вектора(из большего - меньшее)
        int amount;//сколько всего таких векторов
        char axis[1];//вдлоль какой оси
        char axisLine[1];//перпендикулярно какаой оси //new
        //номера точек, обар. данный вектор
        int iNumber1;
        int iNumber2;
    } iVector[10],iVecAmount;
    struct squares{
        int amount;//кол-во квадратов
        //координаты
        point first;
        point second;
        point third;
        point fourth;
        //номера точек, обар. данный квадрат
        int iNumber1;
        int iNumber2;
    } iSquare[20],iSquAmount;
    printf("Введите кол-во точек(до 10): ");
    int points;
    scanf("%i",&points);
    //заполняем массив точек
    for (int i=0; i<points; i++){
        printf("\nВведите через пробел координаты %iй точки (x y): ",i+1);
        scanf("%i %i",&iPoint[i].x,&iPoint[i].y);
        iPoint[i].numb=i+1;
    }
    //заполняем массив векторов
    for (int j=0/*для вектора*/, i=0; i<points-1;  i++){
        for (int k=i+1; k<points; k++){
            if(iPoint[i].x == iPoint[k].x){//вдоль y
                iVector[j].length=(iPoint[i].y>iPoint[k].y)?(iPoint[i].y-iPoint[k].y):(iPoint[k].y-iPoint[i].y);//вычисляем длинну вектора
                iVector[j].begin=(iPoint[i].y>iPoint[k].y)?iPoint[i].y:iPoint[k].y;//присваиваем начало вектора
                iVector[j].end=(iPoint[i].y<iPoint[k].y)?iPoint[i].y:iPoint[k].y;//конец
                iVector[j].line=iPoint[i].x;
                iVector[j].iNumber1=iPoint[i].numb;
                iVector[j].iNumber2=iPoint[k].numb;
                iVector[j].axis[0]='y';//указываем параллельно какой оси расположен вектор
                iVector[j].axisLine[0]='x';//указываем перпендикулярно какаой оси расположен вектор
                j++;
            }
            if(iPoint[i].y == iPoint[k].y){//вдоль x
                iVector[j].length=(iPoint[i].x>iPoint[k].x)?(iPoint[i].x-iPoint[k].x):(iPoint[k].x-iPoint[i].x);
                iVector[j].begin=(iPoint[i].x<iPoint[k].x)?iPoint[i].x:iPoint[k].x;
                iVector[j].end=(iPoint[i].x>iPoint[k].x)?iPoint[i].x:iPoint[k].x;
                iVector[j].line=iPoint[i].y;
                iVector[j].iNumber1=iPoint[i].numb;
                iVector[j].iNumber2=iPoint[k].numb;
                iVector[j].axis[0]='x';
                iVector[j].axisLine[0]='y';//указываем перпендикулярно какаой оси расположен вектор
                j++;
            }
            iVecAmount.amount=j;
        }
    }
    //ищем квадраты и заполнем соответствующий массив
    for (int i=0, j=0; i<iVecAmount.amount; i++){
        if (iVector[i].axis[0] == 'y'){
            //находим координаты вершин квадрата в след. порядке:
            //1--2
            //|  |
            //4--3
            //влево от вектора
            iSquare[j].first.x=iVector[i].line-iVector[i].length;
            iSquare[j].first.y=iVector[i].begin;
            iSquare[j].second.x=iVector[i].line;
            iSquare[j].second.y=iVector[i].begin;
            iSquare[j].third.x=iVector[i].line;
            iSquare[j].third.y=iVector[i].end;
            iSquare[j].fourth.x=iVector[i].line-iVector[i].length;
            iSquare[j].fourth.y=iVector[i].end;
            //находим точки, образовавшие данный квадрат(те же, что и вектор)
            iSquare[j].iNumber1=iVector[i].iNumber1;
            iSquare[j].iNumber2=iVector[i].iNumber2;
            j++;
            //вправо от вектора
            iSquare[j].first.x=iVector[i].line;
            iSquare[j].first.y=iVector[i].begin;
            iSquare[j].second.x=iVector[i].line+iVector[i].length;
            iSquare[j].second.y=iVector[i].begin;
            iSquare[j].third.x=iVector[i].line+iVector[i].length;
            iSquare[j].third.y=iVector[i].end;
            iSquare[j].fourth.x=iVector[i].line;
            iSquare[j].fourth.y=iVector[i].end;
            iSquare[j].iNumber1=iVector[i].iNumber1;
            iSquare[j].iNumber2=iVector[i].iNumber2;
            j++;
        }
        if (iVector[i].axis[0] == 'x'){
            //вверх от вектора
            iSquare[j].first.x=iVector[i].begin;
            iSquare[j].first.y=iVector[i].line+iVector[i].length;
            iSquare[j].second.x=iVector[i].end;
            iSquare[j].second.y=iVector[i].line+iVector[i].length;
            iSquare[j].third.x=iVector[i].end;
            iSquare[j].third.y=iVector[i].line;
            iSquare[j].fourth.x=iVector[i].begin;
            iSquare[j].fourth.y=iVector[i].line;
            //находим точки, образовавшие данный квадрат
            iSquare[j].iNumber1=iVector[i].iNumber1;
            iSquare[j].iNumber2=iVector[i].iNumber2;
            j++;
            //вниз от вектора
            iSquare[j].first.x=iVector[i].begin;
            iSquare[j].first.y=iVector[i].line;
            iSquare[j].second.x=iVector[i].end;
            iSquare[j].second.y=iVector[i].line;
            iSquare[j].third.x=iVector[i].end;
            iSquare[j].third.y=iVector[i].line-iVector[i].length;
            iSquare[j].fourth.x=iVector[i].begin;
            iSquare[j].fourth.y=iVector[i].line-iVector[i].length;
            iSquare[j].iNumber1=iVector[i].iNumber1;
            iSquare[j].iNumber2=iVector[i].iNumber2;
            j++;
        }
        iSquAmount.amount=j;
    }
    for (int i=0; i<points; i++){
        printf("%iя точка, координаты - (%i,%i)\n",i+1,iPoint[i].x,iPoint[i].y);
    }
    for (int i=0; i<iVecAmount.amount; i++){
        printf("Длинна %iго вектора - %i - его координаты - %c1:%i %c2:%i %c:%i\n",i+1,iVector[i].length,iVector[i].axis[0],iVector[i].begin,iVector[i].axis[0],iVector[i].end, iVector[i].axisLine[0], iVector[i].line);
    }
    printf("\nПолучено квадратов - %i шт.",iSquAmount.amount);
    for (int i=0; i<iSquAmount.amount; i++){
        printf("\nкоординаты %iго квадрата:\n",i+1);
        printf("\t(%i,%i); (%i,%i); (%i,%i); (%i,%i)",iSquare[i].first.x,iSquare[i].first.y,iSquare[i].second.x,iSquare[i].second.y,iSquare[i].third.x,iSquare[i].third.y,iSquare[i].fourth.x,iSquare[i].fourth.y);
        printf("\n\tэтот квадрат образован %iй и %iй точками",iSquare[i].iNumber1,iSquare[i].iNumber2);
    }
    printf("\n");
    system("pause");
}
получился громоздким, но это ничего. это хорошо. ибо нужно как можно больше строк. теперь возьмусь за функции)

http://s1.hostingkartinok.com/upload...1bfb22a6ac.png
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
15.12.2012, 21:52     Определить, сколько может быть построено квадратов с вершинами в заданых точках #8
Поздравляю))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 13:17     Определить, сколько может быть построено квадратов с вершинами в заданых точках
Еще ссылки по теме:

C++ В чем может быть ошибка. Расстояние между вершинами дерева
Найти треугольник наибольшей площади с вершинами в заданных точках C++
Найти треугольник наибольшей площади с вершинами в данных точках C++

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

Или воспользуйтесь поиском по форуму:
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
16.12.2012, 13:17  [ТС]     Определить, сколько может быть построено квадратов с вершинами в заданых точках #9
Wolkodav,
спасибо тебе! помог мне
Yandex
Объявления
16.12.2012, 13:17     Определить, сколько может быть построено квадратов с вершинами в заданых точках
Ответ Создать тему
Опции темы

Текущее время: 00:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru