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

Ваш аккаунт

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

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

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

Помогите за денежку! Закончить программу на С++ с графиками

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


ЧТО ЕДИНСТВЕННОЕ НЕ СДЕЛАЛ, ЭТО Я НЕ СМОГ СОСТАВИТЬ АЛГОРИТМ ЧТО БЫ СТРОИЛСЯ ТРЕУГОЛЬНИК ТАК ЧТО БЫ ОН СОДЕРЖАЛ МАКС. КОЛИЧЕСТВО ТОЧЕК.
За 500 руб сможете сделать?


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

#define PIXEL_COUNT 100


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[PIXEL_COUNT];

    gd=DETECT;
    initgraph(&gd,&gm,"");

    start:
    cleardevice();
    randomize();


    int maxx = getmaxx();
    int maxy = getmaxy();
    int x0 = getmaxx()/2;
    int y0 = getmaxy()/2;
    putpixel(x0, y0, 13);
    moveto(x0+5, y0-10);
    outtext("0");

    //Ставим рандомно точки на плоскости
    for(i=0; i<PIXEL_COUNT; 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=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();  
}
446
28 декабря 2011 года
Meander
487 / / 04.09.2011
погоди программки писать, задача очень похожа на те, которые в журналах Квант разбирались, посмотри журналы советского периода, наверняка найдеш
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог