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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 02:36   #1
xEmpire
Новичок
Джуниор
 
Регистрация: 18.12.2012
Сообщений: 2
По умолчанию Сортировка нужной строки в двухмерном массиве (Delphi)

Собственно вопрос: КАК отсортировать одну строку (строка, в которой находиться наименьший элемент двумерного массива)?
И ещё, обязательно ли матрица должна быть квадратной.

Алгоритм поиска нужной мне строки:
Код:
  {Ищем строку с наименьшим элементом}
  min:=a[1,1]; {минимальный элемент}
  indeks:=1;       {индекс строки}
 for i:=1 to n do
for j:=1 to k do
if a[i,j]<min
 then
  begin
   min:=a[i,j];
   indeks:=i;
  end;
     Write(_fix_('номер строки'));write (':');write(' '); Writeln (indeks);
     WriteLn(_Fix_('строка, которую нужно отсортировать'));
     i:=indeks;
     for j:=1 to k do
        Write(a[i,j]:3,' ');
     WriteLn;
  ReadLn;
Перед этим идут процедуры заполнения и вывода массива на экран.

Я не могу понять как мне отсортировать двумерный массив собственно
Я знаю, как из двумерного переделать в одномерный. Но мне нужно что-бы отсортировало строку (т.е по столбцам).

Сортировать нужно выбором, обменом и вставкой.
xEmpire вне форума
Старый 18.12.2012, 08:27   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот так, например:

Код:

   Write(_fix_('номер строки : '); Writeln (indeks);
   WriteLn(_Fix_('строка, которую нужно отсортировать (до сортировки): '));
   for j:=1 to k do
        Write(a[indeks,j]:3,' ');
   WriteLn;
 
    // простейшая сортировка (простыми обменами = модификация "пузырька"
  for i:=1 to k-1 do
   for j:=i+1 to k do
    if a[indeks, i]<a[indeks, j] then
     begin
      tmp:=a[indeks,i];
      a[indeks,i]:=a[indeks,j];
      a[indeks,j]:=tmp;
     end;
     // сортировка завершена

   WriteLn(_Fix_('строка после сортировки: '));
   for j:=1 to k do
        Write(a[indeks,j]:3,' ');
   WriteLn;

p.s. кстати, я бы рекомендовал не выводить строчку отдельно, после заполнения массива исходными данными выведите его на экран.
Потом найдите нужную строчку, сообщите о том, какой элемент наименьший и в какой строке он расположен (как это Вы и делаете).
Потом сортировка строки.
Потом вывести массив полностью целиком. Чтобы было видно, что в массиве изменилась только одна строчка, остальные остались неизменными.
Впрочем, это уже дело вкуса, как выводить результат...

Последний раз редактировалось Serge_Bliznykov; 18.12.2012 в 08:29.
Serge_Bliznykov вне форума
Старый 19.12.2012, 02:20   #3
xEmpire
Новичок
Джуниор
 
Регистрация: 18.12.2012
Сообщений: 2
По умолчанию

Спасибо, учту.
Далее понял, что в моём случае сортировать как одномерный, просто indeks будет у меня фиксированным.

Спасибо, тему можно закрывать.
xEmpire вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестановка строк в двухмерном массиве GoldSieg Паскаль, Turbo Pascal, PascalABC.NET 4 10.11.2011 13:38
Хм, а как найти сумму в двухмерном массиве? L6go1as Помощь студентам 3 28.10.2011 00:28
Поиск элемента в двухмерном массиве (Assembler 86) bookkc Помощь студентам 1 26.11.2010 18:14
найти ошибку в двухмерном массиве Эnnа Помощь студентам 3 23.06.2010 18:39
Строки в Двухмерном массиве Pascal program123 Помощь студентам 3 05.06.2009 22:21