Упорядочить столбцы матрицы по убыванию их средних арифметических - Pascal

Узнай цену своей работы

Формулировка задачи:

Добрый день! Задание звучит следующим образом: Дана матрица целых чисел X(n, т). Упорядочить ее столбцы по убыванию их средних арифметических. Вывести исходную и полученную матрицы. Значения буквенных переменных и элементов матрицы задавать с клавиатуры. С вводом самой матрицы и нахождением среднего арифметического каждого из столбцов, вроде разобрался, а вот сортировкой беда Сам код программы выглядит следующим образом:
Листинг программы
  1. uses crt;
  2. var
  3. a:array[1..100,1..100] of integer;
  4. s:array [1..100] of integer;
  5. N,M,i,j,sr,bf,k:integer;
  6. begin
  7. clrscr;
  8. writeln('Введите размер матрицы:');
  9. readln(n,m);
  10. writeln;
  11. writeln('Размер матрицы=' , n,'*',m);
  12. writeln('Заполните матрицу: ');
  13. for i:=1 to n do begin
  14. for j:=1 to m do begin
  15. writeln('A[',i,',',j,']=');
  16. readln(a[i,j]); {Считываем элементы матрицы}
  17. end;
  18. end;
  19. writeln('Начальная матрица=');
  20. for i:=1 to n do begin
  21. for j:=1 to m do
  22. write(a[i,j]:2,' ');
  23. writeln;
  24. end;
  25. j:=1;
  26. for j:=1 to m do
  27. for i:=1 to n do begin
  28. s[j]:=s[j]+a[i,j];
  29. sr:=sr+1;
  30. if i=n then begin
  31. writeln('Среднее арифметическое=' , (s[j]/sr):6:3);
  32. s[j]:=0;
  33. sr:=0;
  34. end;
  35. end;
Поломав голову получилось следующее:
Листинг программы
  1. for j:=1 to m do
  2. for k:=1 to n-j do
  3. if s[k]<s[k+1] then begin
  4. bf:=s[k];
  5. s[k]:=s[k+1];
  6. s[k+1]:=bf;
  7. end;
  8. for i:=1 to n do begin
  9. bf:=a[i,j];
  10. a[i,j]:=a[i,k+1];
  11. a[i,k+1]:=bf;
  12. end;
  13. writeln('Матрица после сортировки=');
  14. for i:=1 to n do begin
  15. for k:=1 to m do
  16. write(a[i,k]:6:0);
  17. writeln;
  18. end;
Но все же не то что нужно, где-то допустил ошибку, а где не могу понять. Сама ошибка заключается в том, что выводиться либо начальная матрица, либо такая, у которой все столбцы одинаковые. За предоставленные наставления буду благодарен. Спасибо!

Решение задачи: «Упорядочить столбцы матрицы по убыванию их средних арифметических»

textual
Листинг программы
  1.   for i := 1 to n do
  2.     for j := n downto i do
  3.       if s[i] < s[j] then
  4.       begin
  5.         bf := s[j];
  6.         s[j] := s[i];
  7.         s[i] := bf;
  8.  
  9.         for k := 1 to m do
  10.         begin
  11.           bf := a[k, i];
  12.           a[k, i] := a[k, j];
  13.           a[k, j] := bf;
  14.         end;
  15.  
  16.       end;

Объяснение кода листинга программы

  1. Создается цикл i от 1 до n, где n - количество столбцов в матрице.
  2. Вложенный цикл j от n до i.
  3. Если среднее арифметическое столбца i меньше среднего арифметического столбца j, то выполняется следующее:
    • Создается временная переменная bf и присваивается ей значение из столбца j.
    • Значение столбца j заменяется значением столбца i.
    • Значение столбца i заменяется временной переменной bf.
  4. Затем для каждой строки матрицы (предположительно m строк) выполняется следующее:
    • Создается временная переменная bf и присваивается ей значение из ячейки a[k, i].
    • Значение ячейки a[k, i] заменяется значением из ячейки a[k, j].
    • Значение ячейки a[k, j] заменяется временной переменной bf. Этот код выполняет упорядочивание столбцов матрицы по убыванию их средних арифметических значений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы