Компьютерный форум NoWa.cc

Компьютерный форум NoWa.cc (http://nowa.cc/index.php)
-   Visual C++ / С/C++ (http://nowa.cc/forumdisplay.php?f=302)
-   -   не корректно выводит min из массива [с++] (http://nowa.cc/showthread.php?t=381470)

CTPAHHuK 27.12.2012 08:49

не корректно выводит min из массива [с++]
 
Код:

float min(0);
    min=xySqrt(ms[1].x,ms[0].x,ms[1].y,ms[0].y);
   
    for(int i=0;i<=k-1;i++)
        for(int j=1;j<=k-1;j++)
            if( (i!=j) && ( (i!=0)&&(j!=1) ) )
            {
                if(xySqrt(ms[j].x,ms[i].x,ms[j].y,ms[i].y)<=min)//ошибка тут с МИН(если мин 1, а 2 меньше) и по н переменных мин
                cout << setprecision(2)
                    << xySqrt(ms[j].x,ms[i].x,ms[j].y,ms[i].y)
                    << "Koordin "<< ms[j].x << "-" << ms[i].x <<")("<< ms[j].y << "-" << ms[i].y
                    << endl;
        };

Ищу мин расстояние между точками, за min взял две 1е координаты,
и тут возникают следующие ошибки:
если попадаются в начале 2 мин координаты
1.0,1.0
1.0,2.0
1.0,2.0
то выводит мин только одну;
если эти же координаты раскиданы дальше в файле(как пример) дальше получается, что он находит эти 2 мин и ниже этого мин (2е - по 1 и 2е по 0)

Welsper 03.01.2013 16:05

Re: не корректно выводит min из массива [с++]
 
1) Границы циклов неправильные, проходим не все, зато остальное 2 раза проверяем... жесть.
2) Сначала найди минимальное расстояние, потом выводи что ему соответствует.

примерно такой код (надеюсь xySqrt так и сделана, что принимает x1,x2,y1,y2, а не x1,y1,x2,y2):

Код:

min = xySqrt(ms[0].x,ms[1].x,mx[0].y,ms[1].y);
for (i=0; i<k-1; i++)
  for (j=i+1; j<k; j++)
  {
    float mm = xySqrt(ms[i].x,ms[j].x,ms[i].y,ms[j].y);
    if (mm < min)
      min = mm;
  }

cout << "min distance: " << min << " on points:" << endl;

for (i=0; i<k-1; i++)
  for (j=i+1; j<k; j++)
    if (min = xySqrt(ms[i].x,ms[j].x,ms[i].y,ms[j].y))
      cout << i << ") x:" << ms[i].x << "  y:" << ms[i].y << " --- "
              << j << ") x:" << ms[j].x << "  y:" << ms[j].y << endl;



Текущее время: 22:08. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2020 2Baksa.Net

Время генерации страницы 0.09029 секунды с 9 запросами