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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2012, 18:27   #1
AndrewSkull
 
Регистрация: 05.06.2011
Сообщений: 8
По умолчанию Массивы, С++

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

Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>

const int MAX = 100;

class three
{ private: float p, ss, s;
			  float a[MAX], b[MAX];
			  float n, sa[3], sb[3];
  public:

  void vvod(void)
  {
	cout<<"\nСколько точек?"; cin>>n; cout<<'\n';
	for (int i=0; i<=n-1; i++)
	  {
		cout<<"\nКоординаты "<<i+1<<"-той точки: "; cin>>a[i]; cin>>b[i];
	  };
  };

  void vych(void)
  {float d1, d2, d3;
	d1=sqrt((a[0]-a[1])*(a[0]-a[1])+(b[0]-b[1])*(b[0]-b[1]));
	d2=sqrt((a[0]-a[2])*(a[0]-a[2])+(b[0]-b[2])*(b[0]-b[2]));
	d3=sqrt((a[1]-a[2])*(a[1]-a[2])+(b[1]-b[2])*(b[1]-b[2]));
	p=(d1+d2+d3)/2;
	ss=sqrt(p*(p-d1)*(p-d2)*(p-d3));


	for (int i=0; i<=n-1; i++)
		for (int j=0; j<=n-1; j++)
			for (int k=0; k<=n-1; k++)
			  if ((i!=j)&&(i!=k)&&(j!=k))
				{
				 d1=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
				 d2=sqrt((a[i]-a[k])*(a[i]-a[k])+(b[i]-b[k])*(b[i]-b[k]));
				 d3=sqrt((a[j]-a[k])*(a[j]-a[k])+(b[j]-b[k])*(b[j]-b[k]));
				 p=(d1+d2+d3)/2;
				 s=sqrt(p*(p-d1)*(p-d2)*(p-d3));
				 if ((s<ss)&&(s!=0))
							  {ss=s;
								sa[0]=a[i]; sb[0]=b[i];
								sa[1]=a[j]; sb[1]=b[j];
								sa[2]=a[k]; sb[2]=b[k];
							  };
				};
  };

  void vyvod(void)
  {
	cout<<"\nНаменьшая площадь = "<<ss;
	cout<<"\nТочки:";
	for (int i=0; i<=2; i++)
	 {cout<<" ("<<sa[i]<<";"<<sb[i]<<") ";};
  };
};


void main()

{
 three x;

 x.vvod();
 x.vych();
 x.vyvod();

}
AndrewSkull вне форума Ответить с цитированием
Старый 03.03.2012, 15:14   #2
AndrewSkull
 
Регистрация: 05.06.2011
Сообщений: 8
По умолчанию

уже разобрался, доделал, спасибо)))))
если кому из таких же чайников как я нужен код - пишите
AndrewSkull вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12