Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Nomad 94
1 / 1 / 2
Регистрация: 02.04.2012
Сообщений: 46
#1

Найти квадрат наибольшего периметра

05.06.2013, 08:32. Просмотров 508. Ответов 2
Метки нет (Все метки)

Задано множество точек на плоскости.Выбрать из них 4 разные точки, которые являются вершинами квадрата наибольшего периметра.
Вот написал программу помогите исправить ошибки.
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
#include <iostream.h>
#include <math.h>
 
class Ver
{
  private:
     int n,(*a) [2],i, j, k, l;
  public:
     void vvod();
     void Izm();
     void kk();
     void dlina();
 
};
void Ver::dlina(int a[i][0], a[i][1], a[j][0], a[j][1])
  {return (((a[i][0])-(a[j][0]))+((a[i][1])-(a[j][1]))); }
 
void Ver::vvod()//Ввод точек
{
 cout << "Задайте количество точек: ";
 cin >> n;
 a=new int [n][2];
 for (int i=0;i<n;i++)
 {
    cout << "Задайте координату x " << (i+1) << "-й точки: ";
    cin >> a[i][0];
    cout << "Задайте координату y " << (i+1) << "-й точки: ";
    cin >> a[i][1];
 }
 }
 void Ver:: kk(int x1, int x2)
  {return (1/(a[j][0]-a[i][0]);}
 
 void Ver::Izm()
{
  for (i=1;i<n;i++)
    for (j=1;j<n;j++)
      for (k=1;k<n;k++)
        for (l=1;l<n;l++)
         {
          a1=dlina(i, j)
          a2=dlina(j, k)
          a3=dlina(k, l)
          a4=dlina(i, l)
          if (abs(a1-a4)<0,01
          &&abs(a1-a2)<0,01
          &&abs(a1-a3)<0,01
          k1=kk(i,j)
          k2=kk(k,l)
          k3=kk(j,k)
          k4=kk(i,l)
          if (abs(k1-k3)<0,01)and(abs(k2-k4)<0,01)and(abs(k1+(1/k2))<0,01)and(abs(k3+(1/k4))<0,01)
          cout <<'Квадраты', a[]' ,'k2', 'k3', 'k4;
          }
    }
void main()
{
  Ver dlina;
  A.kk();
  A.vvod();
  A.Izm();
 
}
Добавлено через 1 минуту
Задача ООП
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 08:32
Ответы с готовыми решениями:

Квадрат наибольшего периметра
Вот эту задачу не могу реализовать. Задано множество (n) точек на плоскости,...

Квадрат наибольшего периметра
Здравствуйте!!!Прошу помочь с задачей!!! Условие: Задано множество точек на...

Треугольник наибольшего периметра
Друзья, никак не могу осилить задачку, заранее благодарю!) Найти три...

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

Задача на структуры: выбор точек, образующих треугольник наибольшего периметра
Найти три различные точки из заданного множества точек, образующих треугольник...

2
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
05.06.2013, 10:35 #2
Цитата Сообщение от Nomad 94 Посмотреть сообщение
Вот написал программу помогите исправить ошибки.
Да тут не ошибки. Тут все надо к чертям переписывать.
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
class Ver
{
  private:
     int n,(*a) [2],i, j, k, l;
  public:
     void vvod();
     void Izm();
     int kk(int xq, int x2);
     int dlina(int ai0, int ai1, int aj0, int aj1);
     int dlina(int i, int j);
 
};
int Ver::dlina(int ai0/*a[i][0]*/,
               int ai1/*a[i][1]*/,
               int aj0/*a[j][0]*/,
               int aj1/*a[j][1]*/)
  {
  return ((ai0-aj0)+(ai1-aj1));
  //return (((a[i][0])-(a[j][0]))+((a[i][1])-(a[j][1])));
  }
 
void Ver::vvod()//Ввод точек
{
 cout << "Задайте количество точек: ";
 cin >> n;
 a=new int [n][2];
 for (int i=0;i<n;i++)
 {
    cout << "Задайте координату x " << (i+1) << "-й точки: ";
    cin >> a[i][0];
    cout << "Задайте координату y " << (i+1) << "-й точки: ";
    cin >> a[i][1];
 }
 }
 int Ver:: kk(int x1, int x2)
  {return (1/(a[j][0]-a[i][0]);}
 
......


Непонятно что такое а1 в методе Izm:
C++
1
2
3
4
5
6
7
8
9
 void Ver::Izm()
{
  for (i=1;i<n;i++)
    for (j=1;j<n;j++)
      for (k=1;k<n;k++)
        for (l=1;l<n;l++)
         {
          a1=dlina(i, j)
......
0
Nomad 94
1 / 1 / 2
Регистрация: 02.04.2012
Сообщений: 46
07.06.2013, 06:59  [ТС] #3
а1 - длина стороны прямоугольника, в процедуре Izm производится перебор всех возможных вариантов прямоугольников, определяются квадраты, а затем определяется квадрат с наибольшим периметром, и выводится на экран.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 06:59

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

Выбрать три разные точки заданного на плоскости множества точек, составляющие треугольник наибольшего периметра
Задание, как множество точек вывести на экран понял. #include &lt;iostream&gt;...

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


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

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

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