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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
#1

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

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

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

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

Даны координаты вершин треугольника и координаты некоторой точки внутри него - C++
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны...

Заданы координаты трех вершин прямоугольника, необходимо определить координаты четвертой вершины - C++
Заданы координаты трех вершин прямоугольника. Необходимо определить координаты четвертой вершины. Можете найти? Добавлено через 1...

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

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

Даны координаты 3 вершин параллелограмма, найти 4 - C++
Даны координаты 3 вершин параллелограмма, найти 4. Преподаватель сказала, что должно быть 3 случая. Типо 4 вершина может находится в разных...

Определить координаты вершин прямоугольного треугольника - C++
определить координаты вершин прямоугольника наименьшего периметра содержащего треугольник координаты вершин котрого (x1,y1), (x2,y2),...

22
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 минут
мне кажется что всё из-за функции с периметром...((
0
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) ;
0
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 18:39  [ТС] #18
таак....сейчас посмотрим....

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

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

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

Добавлено через 4 минуты
что-то я не соображаю((
0
Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 18:42 #19
Ну вот, вводите теперь диалог с пользователем по поводу количества фигур.
0
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 минут
помогите пожалуйста....((
0
Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 19:04 #21
А если с классами это состыковать, то будет приемлимо?
0
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.11.2010, 19:26  [ТС] #22
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],A[m],B[m] ;
int kol;
 
cout<<" kol-vo figur: ";
cin>>kol;
 
for(int j=1 ; j<kol ; j++)
{ cout<<j<<"mnogoygolnik"<<endl ;
 
 FunTochki ( m ,  X , Y )   ;
}
Добавлено через 2 минуты
классы...я не знаю классы.....но вот....ну а как потом переметры сравнивать?
C++
1
2
3
4
5
for(int j=1 ; j<kol ; j++)
{ cout<<j<<"mnogoygolnik"<<endl ;
 
 FunTochki ( m ,  X , Y )   ;
}
Добавлено через 10 минут
вот выводит точки и периметры....а как теперь выбирать наименьший
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
 {  const m=3;
  int X[m];
int Y[m] ;
int kol;
 
cout<<" kol-vo figur: ";
cin>>kol;
 
for(int j=1 ; j<=kol ; j++)
{ cout<<j<<"mnogoygolnik"<<endl ;
 
 FunTochki ( m ,  X , Y ) ;
  cout<<My_Perimetr( m,X ,  Y)<<endl ;
}
 
   getch();
        return 0;
}
0
Lerny
56 / 56 / 3
Регистрация: 14.03.2010
Сообщений: 151
14.11.2010, 19:43 #23
В вашей программе новая фигура будет по верх старой ложиться и сможет состоять только из 3 углов, это не наглядно и не динамично. Советую с классами разобраться. Они гораздо лучше отображают картину:

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
    class Figura
    {
        public:
        Figura(){}
        ~Figura();
        void Create();
        float Perimetr() const;
        private:
        POINT *cord;
        int razm;
    };
 
    Figura::~Figura()
    {
        delete [] cord;
        cord=0;
    }
 
    void Figura::Create()
    {
        int points;
        cout <<"Vvedite kol-vo uglov:";
        cin >> points;
 
        razm=points;
        cord=new POINT [razm];
        
        cout <<"Vvedite tochki:"<<endl;
        for (int i=0;i<razm;i++)
        {
                cout << "X["<<i<<"]:";
                cin >> cord[i].x;
                cout << "Y["<<i<<"]:";
                cin >> cord[i].y;
        }
    }
 
    float Figura::Perimetr() const
    {
        float P, d;
        P=0;
        for(int i=0; i<razm; i++ )
        {
                if (i==(razm-1))
                {
                        d=sqrt( pow((cord[i].x-cord[0].x),2)+pow((cord[i].y-cord[0].y),2));
                        P=P+d;
                }
                else
                {
                        d=sqrt( pow((cord[i+1].x-cord[i].x),2)+pow((cord[i+1].y-cord[i].y),2));
                        P=P+d ;
                }
        }
        return P;
    }
 
 
 
 
int main()
{
        int kolf;
        cout << "Vvedite kolichestvo figur:";
        cin >>kolf;
        Figura *M=new Figura [kolf];
 
        for (int i=0;i<kolf;i++)
        {
                cout <<i+1<<" Figura:"<<endl;
                M[i].Create();
        }
 
        int num=0,per_min=1e7;
 
        for (int i=0;i<kolf;i++)
        {
                if (M[i].Perimetr()<per_min)
                {
                        per_min=M[i].Perimetr();
                        num=i+1;
                }
        }
 
        cout << "Minimal'niy perimetr u "<<num<<" figuri: "<<per_min<<endl;
 
        delete []M;
        M=0;
        getch();
        return 0;
}
0
14.11.2010, 19:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 19:43
Привет! Вот еще темы с ответами:

Найти координаты всех вершин правильного многоугольника - C++
Здрасте! Есть задача: Дан правильный N-угольник с центром в точке (X, Y) и с координатами одной из вершин X1, Y1. Найти координаты...

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

Даны координаты четырех вершин. Определить вид четырехугольника - C++
Даны координаты четырех вершин. Определить, является ли этот четырехугольник: 1 программа - трапецией 2 программа параллелограммом 3...

Введите цело численные координаты трех вершин прямоугольника - C++
Введите цело численные координаты трех вершин прямоугольника,стороны которого паролельныкоординатным осям. Найти координаты ее четвертой...


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

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

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