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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
#1

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

13.12.2012, 21:38. Просмотров 1266. Ответов 8
Метки нет (Все метки)

Доброго времени суток!

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

Я не глуп в 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]);
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 21:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, сколько может быть построено квадратов с вершинами в заданых точках (C++):

В чем может быть ошибка. Расстояние между вершинами дерева - C++
Входные данные: Первая строка содержит количество вершин в дереве n(1&lt;=n&lt;=500000). Вершины имеют значения от 0 до n-1. В следующих n-1...

Дана точка A(x; y) на координатной плоскости. Определить, принадлежит ли она треугольнику с вершинами в точках . - C++
Дана точка A(x; y) на координатной плоскости. Определить, принадлежит ли она треугольнику с вершинами в точках .

Определить, могут ли три точки быть вершинами треугольника - C++
Всем привет!Помогите решить задачи завтра нужно сдать.Составить алгоритм по блокам,в письменном виде.Если не сложно фотки киньте с...

Сколько может быть конструкторов в классе? - C++
Только один или можно больше?

Стрелки совершают N выстрелов из пистолета по мишени. Кучность стрельбы может быть описана суммой квадратов отклонений результатов каждого выстрела от - C++
Спасибо :)) Ещё пару задач. Стрелки совершают N выстрелов из пистолета по мишени. Кучность стрельбы может быть описана суммой квадратов...

Найти треугольник наибольшей площади с вершинами в заданных точках - C++
Если не сложно помогите пожалуйста хотя бы просто алгоритм, от куда мыслить Дано натуральное число n. С помощью двумерного...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.12.2012, 21:46 #2
Ну если честно то тут удобнее со структурами. Создать структуру точка, структуру вектор( в ней хронятся пары паралельных векторов, в таком примерно формате(точка начала, точка конца), структуру квадрат( в ней хронятся точки квадрата). Ну затем пробегать. Ну записать все в массив точек. Затем перебрать все точки, и заполняем массив векторов, ну затем перебираем массив векторов, на предмет равенства длин, исхода из одной точки и все остальное для квадратов( ну и каунт для их подсчёта)). Примерно так. противные такие задачи, честно скажу!
1
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 минуты
и я так понял....сколько будет таких векторов, столько и квадратов. осталось, вроде как, тока точки "достроить"(высчитать их координаты). вот так =)
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.12.2012, 18:51 #4
ну зачем в квадрате интов столько? и зачем там их кол-во, тут логичнее (коли знаком с контейнером) создать контейнер листов, и когда находишь квадрат то добавлять его. И у тебя есть структура точка, вот и используй её. А не инты лепи. Затем паралленость надо смотреть относительно векторов к друг другу, они же там могут быть повёрнуты. Надо вначале создать массив векторов, а потом искать там пары векторов( массив указателей на двух мерный массив, в котором хроняться пары параллелиных)
1
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 минуту
теперь осталось только выявить точки, с помощью которых был образован квадрат. пока что голова вообще не соображает.
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.12.2012, 23:14 #6
Ну ты выявил квадрат, это сбор векторов, а в векторах хранятся начало и конец вектора, вот тебе и точки)
1
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");
}
получился громоздким, но это ничего. это хорошо. ибо нужно как можно больше строк. теперь возьмусь за функции)

[IMG]http://s1.********************/uploads/thumbs/2012/12/4773b84c0499651b6a0d8a1bfb22a6ac.png[/IMG]
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
15.12.2012, 21:52 #8
Поздравляю))
1
zerO2hacK
1 / 1 / 0
Регистрация: 06.03.2012
Сообщений: 72
16.12.2012, 13:17  [ТС] #9
Wolkodav,
спасибо тебе! помог мне
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 13:17
Привет! Вот еще темы с ответами:

Найти треугольник наибольшей площади с вершинами в данных точках - C++
Дано натуральное число n. С помощью двумерного действительного числового массива i=1,2; j=1,...,n на плоскости задано n точек так, что x1j,...

Построить множество треугольников с вершинами в заданных точках согласно условию - C++
Прошу помочь с одним заданием по С++, начали изучать не так давно, поэтому не особо разбираюсь, пробовал сам, но получается бред... А...

Геометрия (Найти все четырёхугольники, являющиеся выпуклыми, с вершинами в этих точках) - C++
Дано N точек на плоскости.Найти все четырёхугольники, являющиеся выпуклыми, с вершинами в этих точках. я пытался через сравнивание...

Найти треугольник с наибольшей площадью с вершинами в точках заданных координатами (подправить код) - C++
Доброго времени суток! Условие таково: Дано натуральное число n. C помощью двумерного действительного числового массива...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.12.2012, 13:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru