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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 17:19   #1
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
Вопрос разобраться с кодом

доброе время суток)
помогите, пожалуйста, разобраться с кодом.
программе на вход подаются координаты концов отрезков.она должна написать уравнение прямой, пересекающей все эти отрезки.
вот код (его не понимаю, начиная с момента
"float x1i=0,x2i=0,y1i=0,y2i=0;
for (x1i=xmin;x1i<=xmax;x1i+=e).....". не понимаю именно общей идеи что происходит.сам метод. кто может-подскажите)

Код:
#include <stdio.h>
#include<conio.h>
 #define e 1

 bool intersect(float a,float b, float c,float x1,float 
 y1,float x2,float y2)
 {
 if ((a*x1+b*y1+c)*(a*x2+b*y2+c)<=0)
 return true;
 else return false;
 }

 int main()
 {
 int N;
 float 
 x1[50],y1[50],x2[50],y2[50],xmin=0,xmax=0,ymin=0,ymax=0,a=0,b=0,c=0;
      bool no=0,yes=0;
 scanf("%d",&N);
      for (int i=0;i<50;i++)
      {
          x1[i]=0;
          x2[i]=0;
          y1[i]=0;
          y2[i]=0;
      }
 for (int i=1;i<=N;i++)
 {
 scanf("%f %f %f %f",&x1[i],&y1[i],&x2[i],&y2[i]);

 }
      xmin=x1[1];
      ymin=y1[1];
      xmax=x2[1];
      ymax=y2[1];
 for (int i=1;i<=N;i++)
 {
 if (x1[i]<xmin)
 xmin=x1[i];
          if (x2[i]<xmin)
 xmin=x2[i];
          if (x1[i]>xmax)
 xmax=x1[i];
 if (x2[i]>xmax)
 xmax=x2[i];
 if (y1[i]<ymin)
 ymin=y1[i];
          if (y2[i]<ymin)
 ymin=y2[i];
          if (y1[i]>ymax)
 ymax=y1[i];
 if (y2[i]>ymax)
 ymax=y2[i];
 }
      float x1i=0,x2i=0,y1i=0,y2i=0;
      for (x1i=xmin;x1i<=xmax;x1i+=e)
 {
          for (y1i=ymin;y1i<=ymax;y1i+=e)
          {
              for (x2i=xmin;x2i<=xmax;x2i+=e)
              {
                  for (y2i=ymin;y2i<=ymax&&yes!=1;y2i+=e)
                  {
                      a=y2i-y1i;
                      b=x1i-x2i;
                      if (a==0&&b==0)
                          no=1;
                      else no=0;
                      c=y1i*(x2i-x1i)-x1i*(y2i-y1i);
                      //printf("%lf %lf %lf",a,b,c);
                      //no=1;
                      for(int i=1;i<=N&&no!=1;i++)
                      {
                          if 
 (!intersect(a,b,c,x1[i],y1[i],x2[i],y2[i]))
                          {
                              no=1;
                              //yes=1;
                          }
                      }
                      if (no!=1)
                      {
                          printf("%fx+%fy+%f=0",a,b,c);
                          yes=1;
                      }


                  }

              }

          }

      }
      if (yes!=1)
          printf("no");
          getch();
          getch();
 }

Последний раз редактировалось ACE Valery; 16.05.2012 в 18:16.
iris_ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно разобраться с кодом Владимир31 Общие вопросы C/C++ 3 28.03.2011 07:36
Разобраться с кодом. Vlero PHP 2 20.01.2011 12:46
Не могу разобраться с кодом jey7 JavaScript, Ajax 1 17.06.2010 09:38
не могу разобраться с кодом morocko HTML и CSS 1 10.02.2010 21:23