Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не правельно выводит min из массива, не правельно ищет min из файла 
:(
    Опции темы
аНТ
Дата 27.12.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.12.2008

Репутация: нет
Всего: нет



Код

        float min(xySqrt(ms[1].x,ms[0].x,ms[1].y,ms[0].y));
        for(i=0; i<=k-1; i++)
            for(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)
                    {
                        min = ms[j].x,ms[i].x,ms[j].y,ms[i].y;
                        cout << min <<endl;
                    };
                    cout << xySqrt(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)



Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  kod.txt 1,93 Kb
PM MAIL   Вверх
xvr
Дата 27.12.2012, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



  • В строке 8 забыли написать вызов функции xySqrt
  • В строке 4 неправильное условие - вы не включите в сравнение все пары с 0м и 1м элементами, а не только пару из 0го и 1го элемента
  • Ну и печатать min, равно как и индексы, надо после завершения всех циклов. Т.к. в процессе вы найдете много 'минимальных' элементов, которые таковыми не являются, т.к. дальше может найтись элемент еще 'минимальнее'

PM MAIL   Вверх
аНТ
Дата 27.12.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.12.2008

Репутация: нет
Всего: нет



исправил, и теперь нормально min находит,
но так же попарно одну и ту же координату выводит
(
1.0,2.0
0.0,0.0
4.0,6.0 //вот эти 2 последние координаты
3.0,8.0 // повторяются почему то 2 раза у них находит мин
)
сначала смотрит [3.8]и [4.6], а потом их в обратном порядке [4.6] и [3.8] 

    
Код

    for(i=0; i<=k-1; i++)
            for(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)
                        cout << setprecision(2)
                             << xySqrt(ms[j].x,ms[i].x,ms[j].y,ms[i].y) << " - min length, point coordinates: "
                             << "[" << ms[j].x << " . " << ms[j].y << "] and ["
                             << "[" << ms[i].x << " . " << ms[i].y << "] "
                             << endl;
                };


Это сообщение отредактировал(а) аНТ - 27.12.2012, 13:26
PM MAIL   Вверх
xvr
Дата 27.12.2012, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



  • Вынесите печать за циклы
  • Цикл в строке 2 можно сделать for(j=i+1; j<k; j++). Ну и первый цикл (по i) стартовать с 1. Тогда if в строке 3 не понадобится и координаты 2 раза (i,j и j,i) проверять не будет


Это сообщение отредактировал(а) xvr - 27.12.2012, 13:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1044 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.