Программа с++ для поиска координат пересечения сторон двух треугольников работает не совсем верно, в чем ошибка?

Если на бумаге реально пересечений 2 или 1, она может выдать 5 штук. Я думаю ошибка где-то в цикле, потому что по отдельности алгоритм работает, проверял в отдельной программе, то есть точку пересечения двух отрезков находит правильно.
Спасибо большое заранее!
код:

ax[2] // x pervogo treugoljnika
ay[2] // y pervogo treugoljnika
bx[2] // x vtorogo
by[2] // y vtorogo

for (int i=0; i<3; i++)
       {
           x=0.0;
           y=0.0;

           if (i+1>3) break;
           a=koefA( ax, ay, ax[i+1], ay[i+1]);
           b=koefB( ax, ay, a );

           for(int j=0; j<3; j++)
           {

               x=0.0;
               y=0.0;

               if (j+1>3) break;
               a1=koefA( bx[j], by[j], bx[j+1], by[j+1] );
               b1=koefB( bx[j], by[j], a1 );


               x=findx(a,b,a1,b1);
               y=findy(a,b,findx(a,b,a1,b1));

                
                   if ( (x-ax)/(ax[i+1]-ax)==(y-ay)/(ay[i+1]-ay) )
                   {
                       cout << x << " ; " << y << endl;
                       count++;
                   }

           }

       }

       if (count==0) cout << "tochek perese4enija net" << endl;

       cout << endl;
       cout << "prodolzitj (1) zakon4itj (0) ?" << endl;
       cin >> ok;
   } while (ok==1);

   return 0;
}


double koefA (double x1, double y1, double x2, double y2)
{
   double a;

   a = (y2-y1)/(x2-x1);
   return a;
};

double koefB (double x1, double y1, double a)
{
   double b;

   b = y1 - x1*a;
   return b;
};

double findx(double a, double b, double a1, double b1)
{
   double x;
   x=(b1-b)/(a-a1);
   return x;
};

double findy(double a, double b, double x)
{
   double y;
   y=a*x+b;
   return y;
};

Комментарии (11)

нажми_сюда (31) 28. ноября, 2012.г.  
 0 0
ну так йопт это же часть кода, а не весь код, тип я указал, а тут просто написал что за массивы и какой размер, у меня 4 массива по 3 элемента, в чем проблема то? 3 элемента и надо же не? два для х и у 1 треугольника и 2 для второго
QuestART 27. ноября, 2012.г.  
 0 0
мы делали похожую программку с прямоугольниками, думаю там алгоритм будет похожий и в таком случаи на много меньше код. Сама еще не изучала массивы и по идеи данную задачу можно решить без них.
QuestART 27. ноября, 2012.г.  
 0 0
а при объявлении переменных 'х' и 'у' пробовал задавать тип?
Doctor_ 27. ноября, 2012.г.  
 0 0
типа того
Doctor_ 27. ноября, 2012.г.  
 0 0
нумерация идёт с 0. то есть 0 1 2 - всего 3 элемента, тут всё правильно
ну дык, у тебя 0 1 2 = 3 элемента
Doctor_ 27. ноября, 2012.г.  
 0 0
код агонь просто
wad (56) 27. ноября, 2012.г.  
 0 0
верно, расскажи мне как правильно  
нажми_сюда (31) 27. ноября, 2012.г.  
 0 0
массив из 3-х элементов пишется как ax[3];

нумерация идёт с 0. то есть 0 1 2 - всего 3 элемента, тут всё правильно
wad (56) 27. ноября, 2012.г.  
 0 0
ax[2] // x pervogo treugoljnika
массив из 3-х элементов пишется как ax[3];
нажми_сюда (31) 27. ноября, 2012.г.  
 0 0
оочень грустный
esbe (35) 27. ноября, 2012.г.  
 0 0
};
   грустный код) одни плачущие смайлики )))
Похожие записи

нажми_сюда (31)