Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с графикой, библиотека graphics.h. Закончить программу

74K
19 декабря 2011 года
Kewen
6 / / 05.12.2011
Условие: Дано множество точек на плоскости. Найти три различные точки так чтобы треугольник с вершинами в этих точках содержал строго внутри себя максимальное количество точек. Вычислить площадь треугольника.

Не могу сделать единственное, сделать так что бы в треугольнике содержалось максимальное количество точек. Помогите пожалуйста, а то через 2 дня сдавать уже, а она не закончена(((

Код:
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<graphics.h>
#include<fstream.h>

#define PIXEL_COUNT 10


struct Pt
{
    double x;
    double y;
};

//функция нахождения длины стороны треугольника.
// входными параметрами служат координаты конца и начала стороны.
double SideLength(double x1,double y1,double x2,double y2)
{
    double a = sqrt((x2-x1)/10*(x2-x1)/10+(y2-y1)/10*(y2-y1)/10);
    return a*10;
}

//функция нахождения периметра треугоника.
//входные параметры - стороны треугольника
double Perimetr (double s1, double s2, double s3)
{
     return (s1+s2+s3);
}


//функция нахождения площади треугольника (по формуле Герона)
//входные параметры - стороны треугольника
double Sqare (double s1, double s2, double s3)
{
      double p;
      p = (Perimetr(s1, s2, s3))/2;
      return  sqrt((p*(p-s1)*(p-s2)*(p-s3)));
}


void main()
{
    int gd,gm,flag,i;
    double s1,s2,s3,S,p,R,x1, x2, y1, y2;
    Pt t, a[10];
 
    gd=DETECT;
        initgraph(&gd,&gm,"");
 
    start:
    cleardevice();
    randomize();


        int maxx = getmaxx();
        int maxy = getmaxy();
       
        //Ставим рандомно точки на плоскости
        for(i=0; i<10; i++)
          {
            a.x = random(maxx);
            a.y = random(maxy);
            putpixel(a.x, a.y, 10);

          }



    //упорядочиваем вершины треугольника по возрастанию их y-координаты
    if(a[0].y>a[1].y & a[0].x>a[1].x) {t=a[0]; a[0]=a[1]; a[1]=t;}
    if(a[1].y>a[2].y & a[1].x>a[2].x) {t=a[1]; a[1]=a[2]; a[2]=t;}
    if(a[0].y>a[2].y & a[0].x>a[2].x) {t=a[0]; a[0]=a[2]; a[2]=t;}
    if(a[0].y>a[1].y & a[0].x>a[1].x) {t=a[0]; a[0]=a[1]; a[1]=t;}
 
    setcolor(YELLOW); circle(a[0].x,a[0].y,3);
    setcolor(WHITE);  circle(a[2].x,a[2].y,3);
 
    //чертим треугольник
     for(i = 0; i < 3; i++)
          {
            putpixel(a.x,a.y, WHITE);
          }
     line(a[0].x, a[0].y, a[1].x,a[1].y);
     line(a[1].x, a[1].y, a[2].x,a[2].y);
     line(a[2].x, a[2].y, a[0].x,a[0].y);
 
     setcolor(YELLOW); circle(a[0].x,a[0].y,3);
     setcolor(WHITE);  circle(a[2].x,a[2].y,3);
 
    //Находим длины сторон треугольника
 
        s1=SideLength(a[0].x,a[0].y, a[1].x,a[1].y);
        s2=SideLength(a[1].x,a[1].y, a[2].x,a[2].y);
        s3=SideLength(a[2].x,a[2].y, a[0].x,a[0].y);
 
// Находим полупериметр треугольника и его площадь
        p = (Perimetr(s1, s2, s3))/2;
        S = Sqare (s1, s2, s3);

cout<<"p = "<<p<<endl;
cout<<"S = "<<S<<endl;

getch();
closegraph();  
}
14
19 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
может надо перебрать все возможные треугольники?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог