Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
barlog
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
1

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

14.11.2010, 14:38. Просмотров 1898. Ответов 22
Метки нет (Все метки)

...люди добрые....не знаю как это сделать -
. Среди заданных координатами вершин многоугольников на плоскости найти многоугольник с наименьшим периметром.

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

Даны координаты вершин треугольника и координаты некоторой точки внутри него
Даны координаты вершин треугольника и координаты некоторой точки внутри него....

Заданы координаты трех вершин прямоугольника, необходимо определить координаты четвертой вершины
Заданы координаты трех вершин прямоугольника. Необходимо определить координаты...

Проверить лежит ли один из многоугольников строго внутри другого и определить площади многоугольников
Два выпуклых многоугольника заданы на плоскости перечислением координат вершин...

Даны координаты 3 вершин параллелограмма, найти 4
Даны координаты 3 вершин параллелограмма, найти 4. Преподаватель сказала, что...

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

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

Добавлено через 53 секунды
хмм...и еще неизвестно сколько всего этих многоугольников....((...
0
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
14.11.2010, 15:14 4
В случае, когда не знаешь, что делать в подобных задачах - делай полный перебор. Т.е. перебираем ВСЕ возможные многоугольники, ищем их периметры и выбираем минимальный.
1
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
14.11.2010, 15:14 5
Т.е. у нас есть просто набор точек и всё?
1
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
14.11.2010, 15:16 6
Зачем матрица - достаточно двумерного массива, первая строка - абсциссы, вторая - ординаты.
1
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
14.11.2010, 15:18 7
silent_1991, А двумерный массив не есть матрица? =)
1
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
14.11.2010, 15:20 8
Да, но вы предлагали создавать для каждой фигуры отдельный массив, причём ещё и размерностью, равной количеству вершин, как я понял... А при условии, что мы не знаем ни количество фигур, ни количество вершин в каждой - это не есть тру. Нам, как я понял, дан просто набор точек на плоскости.
1
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
14.11.2010, 15:22 9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Да, но вы предлагали создавать для каждой фигуры отдельный массив, причём ещё и размерностью, равной количеству вершин, как я понял... А при условии, что мы не знаем ни количество фигур, ни количество вершин в каждой - это не есть тру. Нам, как я понял, дан просто набор точек на плоскости.
Я просто из фразы "Я вот не пойму как эти точки задавать!!" понял, что мы сами задаём разные многоугольники.
barlog, Их задавать или они уже заданы(точки)?
1
barlog
2 / 2 / 1
Регистрация: 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;
должен же вроде считать периметр
0
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
14.11.2010, 16:35 11
C++
1
2
cout<<"Perimetr =  "<<endl;
       cout<<P;
1
barlog
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 16:41  [ТС] 12
ООО!!!Посчитал периметр...тока неправильно...почему....

Добавлено через 1 минуту
помогите пожалуйта!!!
0
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
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 ;
        }
  }
У меня по тем формулам тоже вроде нормально считалось.
0
barlog
2 / 2 / 1
Регистрация: 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. Прямоугольный трекголник...
0
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
14.11.2010, 16:47 15
C++
1
float  P, d , d1;
Сейчас разберёмсо.
0
barlog
2 / 2 / 1
Регистрация: 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 минут
мне кажется что всё из-за функции с периметром...((
0
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
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) ;
0
barlog
2 / 2 / 1
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 18:39  [ТС] 18
таак....сейчас посмотрим....

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

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

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

Добавлено через 4 минуты
что-то я не соображаю((
0
Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 154
14.11.2010, 18:42 19
Ну вот, вводите теперь диалог с пользователем по поводу количества фигур.
0
barlog
2 / 2 / 1
Регистрация: 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 минут
помогите пожалуйста....((
0
14.11.2010, 18:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 18:59

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

Даны координаты вершин много угольника
Даны координаты вершин много угольника (x1,y1,x2,y2,...,x10,y10).Напишите...

Найти координаты вершин треугольника из bmp файла
нам дан bmp файл на котором нарисован треугольник. размер файла 512*512. как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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