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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 10:10   #1
pettat69
Новичок
Джуниор
 
Регистрация: 15.12.2012
Сообщений: 2
Восклицание задача на сортировку массива

Дана целая прямоугольная матрица размерности NxM. Найти среднее арифметическое элементов каждого столбца и упорядочить столбцы по возрастанию этих элементов. (При сортировке использовать метод прямого выбора).
проблема в выводе отсортированного массива, как перейти от сортировки одномерного массива к матрице? Подскажите!

Последний раз редактировалось pettat69; 15.12.2012 в 13:39.
pettat69 вне форума Ответить с цитированием
Старый 16.12.2012, 01:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Тут всё просто.
Вам нужно уяснить два момента.
1-й. По какому признаку сравниваются столбцы? (ответ: по величине среднеарифметичегого значения )

2-й. Упорядочить - это значит обменять местами ЦЕЛЫЕ столбцы.

допустим есть два столбца 3 и 7 (цифры условные).
мы вычисляем среднеариф. для 3-го столбца и вычисляем среднеариф. для 7-го столбца и сравниваем. Если среднеариф. для 3-го столбца больше, то эти столбцы надо поменять местами. Берём первую строчку и меняем элементы 3-го столбца и 7-го. Потом - берём вторую строчку и меняем элементы 3-го столбца и 7-го. и т.д. в цикле, до N.

в программе это будет выглядеть так (тут сортировка простыми обменами (модифицированным пузырьком) - на свой вид сортировки исправите самостоятельно) :
Код:
   for i:=1 to m-1 do
     for j:=i to m do
       if SrednStolbca(A, n, i)> SrednStolbca(A, n, j) then begin
           {меняем элементы столбцов i и j местами}
            for k:=1 to n do begin
              temp := A[k, i];
              A[k, i] := A[k, j];
              A[k, j] := temp; 
            end;
       end;
p.s. данное решение "в лоб", простое, но не очень эффективное в плане вычислительных затрат. гораздо лучше, конечно, создать дополнительный массив, в котором хранить средние значения и номер стролбца и сортировать его.
А потом, по полученному массиву сортировать исходный. но это решение алгоритмически немного сложнее..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2012, 08:58   #3
pettat69
Новичок
Джуниор
 
Регистрация: 15.12.2012
Сообщений: 2
По умолчанию

а можно подсказать где мне внести изменения.
Код:
program lab6m;
var a:array [1..100,1..100] of integer;b:array[1..100] of real;
                         i,j,m,n,s,k,q: integer;s1,x:real;
                         begin
                         writeln('ўўҐ¤Ё n');
                         readln(n);
                          writeln('ўўҐ¤Ё m');
                         readln(m);
                         randomize;
                         for i:=1 to n do
                         for j:=1 to m do
                         a[i,j]:=random(40);
                          for i:=1 to n do begin
                         for j:=1 to m do
                        write( a[i,j]:4,' ');writeln;end;


                         for j:=1 to m do begin
                          s:=0; for i:=1 to n do
    s:=s+a[i,j]; writeln(s:3); s1:=s/n;
                         writeln('b[',j,']=',s/n:3:2);
                          end;
 for i:=1 to n do begin
  for j:=1 to m-1 do begin
  k:=j;x:=b[j];
  for q:=j+1 to m do
  if b[j]<x then begin
  k:=q;x:=b[q]; end;b[k]:=b[j]; b[j]:=x;

   end; end;
   for i:=1 to n do begin
                         for j:=1 to m do
                         writeln('b[',j,']=',b[j]:3:2);
                        write( a[i,j]:4,' ');writeln;end;
                        readln;end.

Последний раз редактировалось Stilet; 16.12.2012 в 12:36.
pettat69 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на сортировку массива ReMicroN Помощь студентам 2 02.05.2012 15:19
задача на сортировку массива [Паскаль] Larkin Помощь студентам 1 05.12.2010 11:51
Задача на сортировку двумерного массива Angelika Помощь студентам 1 29.05.2009 18:49
Из сортировки массива в сортировку матрици XXXimpulsXXX Помощь студентам 2 12.10.2008 15:11
Задача на сортировку массива Acid Паскаль, Turbo Pascal, PascalABC.NET 1 17.06.2007 00:16