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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2013, 15:12   #21
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так косяк наблюдался на строках примерно такого типа (где минимальный элемент был первым в строке):
0 2 0 6 7 5 5 8 6 4

мы прошлись по строке и получили индексы
minJ равен 0 (здесь ноль - это индекс == порядковый номер в строке)
maxJ равен 7 (опять таки 7 - это индекс)

теперь наша задача поставить на первое место максимальный элемент
мы меняем местами, получаем строку:
8 2 0 6 7 5 5 0 6 4

теперь мы должны поставить минимальный элемент на последнее место
минимальный элемент у нас имел индекс 0, в переменной minJ находится 0. и это значение никто не изменил (кстати, можно было пойти по пути замены индекса, см. код ниже)
т.о. мы ошибочно берём минимальный элемент с позиции 0, но там уже не минимальный, а МАКСИМАЛЬНЫЙ элемент. и получается, что мы 8-ку записываем на последнее место, меняя со стоящей там 4-кой.
получаем, ошибочно, строку:
4 2 0 6 7 5 5 0 6 8

так понятнее?

А ещё можно попробовать ещё такой код, без множества дополнительных переменных:
Код:
  // поменяем местами максимальный и первый элемент строки
  tmp = F[i][0];
  F[i][0] = F[i,maxJ]
  F[i,maxJ] = tmp;

  // внимание! Корректируем позицию минимального элемента, 
  //  если она была равно ноль - делаем её такой, какую позицию 
  //  после обмена стал занимать нулевой элемент
  if (minJ==0) {
     minJ = maxJ;  
  }

  // поменяем местами минимальный и последний элемент строки
  tmp = F[i][m-1];
  F[i][m-1] = F[i,minJ]
  F[i,minJ] = tmp;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2013, 15:27   #22
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Все спасибо,теперь я окончательно разобрался!
spectrum988 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу придумать доработку. Rik55rus Помощь студентам 1 06.10.2012 21:13
Не могу придумать формулу на нахождение среднего балла konistra Microsoft Office Excel 3 08.04.2011 08:57
Не могу придумать формулу для поставленной задачи. masaylov Microsoft Office Excel 6 07.04.2011 11:11
не могу придумать форрмулу!!! ta4ilka Microsoft Office Excel 3 11.04.2010 18:02
Не могу придумать или подобрать формулу! Помогите! Gnom70 Microsoft Office Excel 4 30.01.2008 11:01