Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 01:47   #1
GrShOot
Новичок
Джуниор
 
Регистрация: 28.05.2013
Сообщений: 1
По умолчанию Найти треугольник с наибольшей площадью с вершинами в точках заданных координатами (подправить код) C++

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

Условие таково:

Дано натуральное число n. C помощью двумерного действительного числового массива [Xi,j]i=1,2; j=1,...,n
на плоскости задано n точек такБ что X1,j и X2,j- координаты j-й точки.
Найти треугольник наибольшей площади с вершинами в этих точках.



Собственно вот что я сделал:
Код:
#include <iostream>
#include <math.h>
#include <stdlib.h>
 
 
using namespace std;
 
void input(int **mas, const size_t n){
 
  for(int i = 0; i < n; i++)
  {cout<<"введите координаты точки "<<i+1<<endl;
 
    for(int j = 0; j < 2; j++){
      cin >> mas[i][j];
    }
  }
}
 
void output(int **mas,double mas2, const size_t n){
 cout<<"Координаты введеных точек:"<<endl;
  for(int i = 0; i < n; i++){
 
    for(int j = 0; j < 2; j++)
      cout << mas[i][j] << ' ';
      cout << '\n';
 
 
 
  }
 
}
 
//нахождение площади треугольника по формуле Герона
float square (float a, float b, float c)
{
 
   float p = (a + b + c)/2;
   float s = sqrt ( p*(p-a)*(p-b)*(p-c) );
   
 
   return s;
}
 
//проверка на существование треугольника из заданых отрезков
bool istriangle (float a, float b, float c)
{
   if (a >= b+c) return 0;
   if (b >= a+c) return 0;
   if (c >= a+b) return 0;
 
   return 1;
}
 
int main()
{  setlocale(LC_CTYPE,"Russian");
   cout<<"Введите количество точек"<<endl;
 
    int n,i,j;
    cin>>n;
    if (n<3)
        cout<<"Неверное количество точек";
     else{
    int **mas;
    mas=new int*[n];
    for ( i=0;i<n;i++)
    mas[i]=new int[n];
    double *mas2=new double[n];
    input(mas,n);
    output(mas,*mas2,n);
    double maxsquare=0;
    double a,b,c;
 
    for(i=0;i<n;i++)
    {if (i!=n-1)
      mas2[i]=sqrt(pow(abs(mas[i][0]-mas[i+1][0]),2)+pow(abs(mas[i][1]-mas[i+1][1]),2));
      else mas2[i]=sqrt(pow(abs(mas[i][0]-mas[0][0]),2)+pow(abs(mas[i][1]-mas[0][1]),2));
    }
 
 
 
    for(int i = 0; i < n-3; ++i)
     { a=mas2[i]; b=mas2[i+1]; c=mas2[i+3];
    
       if ( istriangle (a, b, c) )
        {
         //и его площадь больше максимальной
         //значит его площадь максимальная
        if ( square (a, b, c) > maxsquare )
        {
            maxsquare = square (a, b, c);
            cout << "Максимальная площадь треугольника: " << maxsquare << endl;
        }
        }
        else cout<<"Треугольник не существует"<<endl;
       }
 
}}

При любых входных данных треугольник не существует(((
уже 3тий день пытаюсь разобраться в чем проблема(((
Помогите пожалуйста
GrShOot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано 3 точки своими координатами х,у. Будет ли они вершинами треугольника. Если да - найти периметр и площадь треугольника Arhi555 Паскаль, Turbo Pascal, PascalABC.NET 2 11.09.2012 17:46
Вывести страну с наибольшей площадью arefdiman Паскаль, Turbo Pascal, PascalABC.NET 0 06.05.2011 01:09
Треугольник на плоскости задан координатами своих вершин.Найти координаты точки пересечения его медиан. Silver23 Помощь студентам 2 13.01.2010 15:59
Определение параллелограмма с наибольшей площадью. Delphi. Absentik Помощь студентам 0 19.11.2009 17:15