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

Координаты вершин многоугольников - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 14:38     Координаты вершин многоугольников #1
...люди добрые....не знаю как это сделать -
. Среди заданных координатами вершин многоугольников на плоскости найти многоугольник с наименьшим периметром.

Желательно использовать функции.Но у меня и без функций то не выходит....вообще какая-то очень сложная задача(((...Помогите пожалуйста((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 14:38     Координаты вершин многоугольников
Посмотрите здесь:

Ввести координаты вершин треугольника. Проверить, является ли он равнобедренным C++
Найти координаты всех вершин правильного многоугольника C++
C++ Даны координаты вершин треугольника и координаты некоторой точки внутри него
C++ Определить координаты вершин прямоугольного треугольника
C++ Даны координаты вершин много угольника
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 14:49     Координаты вершин многоугольников #2
Отрезок по координатам определяется как sqrt( (x1-x2)^2 + (y1-y2)^2), а дальше уже всё проще некуда.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 14:59  [ТС]     Координаты вершин многоугольников #3
А про эту формулу я и сама знаю))
Я вот не пойму как эти точки задавать!!!...и еще ведь неизвестно кол-во углов.не сказано какой многоугольник.

Добавлено через 53 секунды
хмм...и еще неизвестно сколько всего этих многоугольников....((...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
14.11.2010, 15:14     Координаты вершин многоугольников #4
В случае, когда не знаешь, что делать в подобных задачах - делай полный перебор. Т.е. перебираем ВСЕ возможные многоугольники, ищем их периметры и выбираем минимальный.
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 15:14     Координаты вершин многоугольников #5
Т.е. у нас есть просто набор точек и всё?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
14.11.2010, 15:16     Координаты вершин многоугольников #6
Зачем матрица - достаточно двумерного массива, первая строка - абсциссы, вторая - ординаты.
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 15:18     Координаты вершин многоугольников #7
silent_1991, А двумерный массив не есть матрица? =)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
14.11.2010, 15:20     Координаты вершин многоугольников #8
Да, но вы предлагали создавать для каждой фигуры отдельный массив, причём ещё и размерностью, равной количеству вершин, как я понял... А при условии, что мы не знаем ни количество фигур, ни количество вершин в каждой - это не есть тру. Нам, как я понял, дан просто набор точек на плоскости.
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 15:22     Координаты вершин многоугольников #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Да, но вы предлагали создавать для каждой фигуры отдельный массив, причём ещё и размерностью, равной количеству вершин, как я понял... А при условии, что мы не знаем ни количество фигур, ни количество вершин в каждой - это не есть тру. Нам, как я понял, дан просто набор точек на плоскости.
Я просто из фразы "Я вот не пойму как эти точки задавать!!" понял, что мы сами задаём разные многоугольники.
barlog, Их задавать или они уже заданы(точки)?
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 16:35  [ТС]     Координаты вершин многоугольников #10
если честно я не знаю...но мне кажется надо самим задавать точки.Вот смотрите что у меня вышло...ну это правда только для одного многоугольника.но все равно ....оно не работает!!!Пишет ошибка из корня((((....


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
#include <vcl.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{      float X[10];
       float Y[10];
 
   int n, i  ;
int  P, d , d1;
 cout<<"Vvedite kol-vo yglov mnogoygolnika\n";
 cin>>n;
  cout<<"Vvedite koordinaty tochek X :\n";
 for(i=0;i<n;i++)
 { cout<<" X["<<i<<"]= ";
   cin>>X[i]; }
  cout<<"Vvedite koordinaty tochek Y :\n";
  for(i=0;i<n;i++)
  { cout<<" Y["<<i<<"]= ";
   cin>>Y[i]; }
 
  P=0;
  for(i=0; i<n-1; i++ )
  { d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])-(Y[i+1]-Y[i])*(Y[i+1]-Y[i])) ;
    P=P+d ;
  }
   d1=sqrt(  (X[n-1]-X[0])*(X[n-1]-X[0])-(Y[n-2]-Y[0])*(Y[n-2]-Y[0])) ;
   P=P+d1 ;
 
  cout<<"Perimetr =  "<<endl;
  cin>>P;
 
 
   getch();
        return 0;
}
Добавлено через 1 минуту
неважно наверное вообще как эти точки заданы...в условие не сказано....мне бы вообще хоть как-то решить(((

Добавлено через 6 минут
какой-то SQRT: DOMAIN ERROR

Добавлено через 20 минут
Ой да....я там в формуле минус поставила а надо плюс.....но даже после этого не работает(((

Добавлено через 35 секунд
Цитата Сообщение от barlog Посмотреть сообщение
d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])-(Y[i+1]-Y[i])*(Y[i+1]-Y[i]))
d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i]))

Добавлено через 2 минуты
о чего-то уже не пишет ошибку...но периметр не выводит...почему....не знаю...
C++
1
2
3
4
5
6
7
8
9
10
  P=0;
  for(i=0; i<n-1; i++ )
  { d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i])) ;
    P=P+d ;
  }
   d1=sqrt(  (X[n-1]-X[0])*(X[n-1]-X[0])+(Y[n-2]-Y[0])*(Y[n-2]-Y[0])) ;
   P=P+d1 ;
 
  cout<<"Perimetr =  "<<endl;
  cin>>P;
должен же вроде считать периметр
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 16:35     Координаты вершин многоугольников #11
C++
1
2
cout<<"Perimetr =  "<<endl;
       cout<<P;
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 16:41  [ТС]     Координаты вершин многоугольников #12
ООО!!!Посчитал периметр...тока неправильно...почему....

Добавлено через 1 минуту
помогите пожалуйта!!!
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 16:42     Координаты вершин многоугольников #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(i=0; i<n; i++ )
  {
        if (i==(n-1))
        {
                d=sqrt(  (X[i]-X[0])*(X[i]-X[0])+(Y[i]-Y[0])*(Y[i]-Y[0])) ;
                P=P+d;
        }
        else
        {
                d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i])) ;
                P=P+d ;
        }
  }
У меня по тем формулам тоже вроде нормально считалось.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 16:45  [ТС]     Координаты вершин многоугольников #14
X0=2
X1=2
X3=5

Y0=2
Y1=6
Y2=2

P=14


А должно Р=12. Прямоугольный трекголник...
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 16:47     Координаты вершин многоугольников #15
C++
1
float  P, d , d1;
Сейчас разберёмсо.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 18:13  [ТС]     Координаты вершин многоугольников #16
оооо!!!!уже считает верно!!!))))))))спасибо!
сейчас буду пробовать делать функции и применять для много разных многоугольников)))

Добавлено через 21 минуту
хмммм....че то с функциями туго....
как я понимаю у нас должно быть 2 функции - 1)которая задает массивы координат точек Х и У
2)которая считает периметр многоугольника
тааак.....хмм...

Добавлено через 4 минуты
1ая функция

C++
1
2
3
4
5
6
7
8
9
10
11
void FunTochki (unsigned n , int X[ ] , int Y[ ] )
 {
  cout<<"Vvedite koordinaty tochek X :\n";
 for(i=0;i<n;i++)
 { cout<<" X["<<i<<"]= ";
   cin>>X[i]; }
  cout<<"Vvedite koordinaty tochek Y :\n";
  for(i=0;i<n;i++)
  { cout<<" Y["<<i<<"]= ";
   cin>>Y[i]; }
  }
Добавлено через 2 минуты
а вот со 2ой проблемы...тут типа будет с одним результатом....что дано-массивы....хм...че то я не очень понимаю...((

Добавлено через 2 минуты
как задать вторую функцию....там же даны массивы....может через 1ую....
Помогите пожалуйста!

Добавлено через 4 минуты
хммм...может так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int My_Perimetr( int X[ ] , int Y[ ])
 {
  float P, d , d1;
  P=0;
 for(i=0; i<n; i++ )
  {
        if (i==(n-1))
        {
                d=sqrt(  (X[i]-X[0])*(X[i]-X[0])+(Y[i]-Y[0])*(Y[i]-Y[0])) ;
                P=P+d;
        }
        else
        {
                d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i])) ;
                P=P+d ;
        }
  }
 
  cout<<"Perimetr =  "<<P  ;
 
  return P ;
  }
Добавлено через 13 минут
хмммммм....не работает.....ПОМОГИТЕ КТО-НИТЬ!!!ПОЖАЛУЙСТА!.....и у меня тут один многоугольник...а как сделать много и чтобы еще выводил наим периметр(((
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
  //---------------------------------------------------------------------------
 
#include <vcl.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
 
 void FunTochki (int n , int X[ ] , int Y[ ] )
 {
  cout<<"Vvedite koordinaty tochek X :\n";
 for(int i=0;i<n;i++)
 { cout<<" X["<<i<<"]= ";
   cin>>X[i]; }
  cout<<"Vvedite koordinaty tochek Y :\n";
  for(int i=0;i<n;i++)
  { cout<<" Y["<<i<<"]= ";
   cin>>Y[i]; }
  }
 
 
 int My_Perimetr( int X[ ] , int Y[ ])
 { int n;
  float P, d , d1;
  P=0;
 for(int i=0; i<n; i++ )
  {
        if (i==(n-1))
        {
                d=sqrt(  (X[i]-X[0])*(X[i]-X[0])+(Y[i]-Y[0])*(Y[i]-Y[0])) ;
                P=P+d;
        }
        else
        {
                d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i])) ;
                P=P+d ;
        }
  }
 
   return P ;
  }
 
 
 
 
 int main()
 {  const m=3;
  int X[m];
int Y[m];
 
 FunTochki ( m ,  X , Y )   ;
 
 cout<<My_Perimetr( X ,  Y) ;
 
 
 
 
   getch();
        return 0;
}
Добавлено через 17 минут
у меня не получается(((........Помогите пожалуйста!для того кто хорошо владеет функциями тут быстро и легко!!!УМОЛЯЮ!

Добавлено через 18 минут
мне кажется что всё из-за функции с периметром...((
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 18:15     Координаты вершин многоугольников #17
У вас во второй функции n не определено, посему и ругается программа на цикл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int My_Perimetr(int n, int X[ ] , int Y[ ])
 {
  float P, d;
  P=0;
 for(int i=0; i<n; i++ )
  {
        if (i==(n-1))
        {
                d=sqrt(  (X[i]-X[0])*(X[i]-X[0])+(Y[i]-Y[0])*(Y[i]-Y[0])) ;
                P=P+d;
        }
        else
        {
                d=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i])) ;
                P=P+d ;
        }
  }
 
   return P ;
  }
C++
1
cout<<My_Perimetr(m,X,Y) ;
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 18:39  [ТС]     Координаты вершин многоугольников #18
таак....сейчас посмотрим....

Добавлено через 6 минут
хи-хи)))...теперь работает))))
Сейчас попробует сделать много многоугольников....

Добавлено через 31 секунду
чуть что спрошу....)

Добавлено через 2 минуты
неее....слушайте....хммм....ну даже если мы много раз будем вызывать функцию Точки(т.е задавать много многоугольников) как можно разобраться где какая по счету фигура?

Добавлено через 4 минуты
что-то я не соображаю((
Lerny
 Аватар для Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 18:42     Координаты вершин многоугольников #19
Ну вот, вводите теперь диалог с пользователем по поводу количества фигур.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 18:59     Координаты вершин многоугольников
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 18:59  [ТС]     Координаты вершин многоугольников #20
нет...я не понимаю ...вот одна фигура....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 int main()
 {  const m=3;
  int X[m];
int Y[m];
 
 FunTochki ( m ,  X , Y )   ;
 
 cout<<My_Perimetr( X ,  Y) ;
 
 
 
   getch();
        return 0;
}
Добавлено через 2 минуты
вот если типа 2...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 int main()
 {  const m=3;
  int X[m];
int Y[m];
 
 FunTochki ( m ,  X , Y )   ;
  FunTochki ( m , A , B) ;
 
cout<<My_Perimetr( m,X ,  Y)<<endl ;
cout<<My_Perimetr( m,A ,  B) ;
 
 
 
 
   getch();
        return 0;
}
Добавлено через 50 секунд
а если мы с клавиатуры задаем кол-во фигур.и он сам потом выводи результат с наименьшим периметром.....я не знаю как это сделать(

Добавлено через 10 минут
помогите пожалуйста....((
Yandex
Объявления
14.11.2010, 18:59     Координаты вершин многоугольников
Ответ Создать тему
Опции темы

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