Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lortine
Вот такая задача... мож есть примеры или идеи у кого.. алгоритымы? .. Буду очень признателен за помощь:

Упорядочить элементы строк матрицы за падением их значений методом обмена.
Найти f(a)-среднее арифмитическое значение элементов в кажом столпце матрицы
F(a)- среднее геометрическое значение
Lortine
ПО условию матрица 5 на 5
Lortine
Сортировку оформить в виде процедуры а вычисление средних значений в виде функций...


Хелп плз smile.gif Завтра сдавать....
Lortine
Код
for k:=1 to n do
          for i:=2 to n do
          for j:=1
          if a[k,j]<a[k,j-1] then
            begin
                 t:=a[k,j]; a[k,j]:=a[k,j-1]
                 a[k,j-1]:=t
                             end;



Попробывал переделать метод сортировки обмена(пузырьковый) одномерного массива для матрицы...


Вопрос в том.. правилен ли метод сортировки
и как правильно оформить процедуру среднего арифметического и геометрического значений чисел столпцов матрицы (уже после сортировки)?
Lortine
Я так понял ответа не дождусь sad.gif
klem4
Цитата
Я так понял ответа не дождусь sad.gif


Не стоит так драматизировать :))

Вот разбирайся ;)

uses crt;
const
  n = 3;

type
  TMatrix = array [1..n, 1..n] of Integer;

{
 Заполняем матрицу случайными числами
}

procedure Create(var mx: TMatrix);
var
  i, j: Integer;
begin
  Randomize;
  for i := 1 to n do
   for j := 1 to n do
    mx[i, j] := Random(10);
end;

{
 Печатаем матрицу
}

procedure Print(const mx: TMatrix);
var
  i, j: Integer;
begin
  writeln;
  for i := 1 to n do begin
    writeln;
    for j := 1 to n do write(mx[i, j]:3);
  end;
  writeln;
end;

{
 Сортируем строку матрица с номером row методом "Пузырька"
}

procedure SortRow(var mx: TMatrix; const row: Integer);
var
  i, j, T: Integer;
begin
  for i := n downto 2 do
   for j := 1 to i - 1 do
    if mx[row, j] > mx[row, j + 1] then begin
      T := mx[row, j];
      mx[row, j] := mx[row, j + 1];
      mx[row, j + 1] := T;
    end;
end;

{
 Среднее арифм. столбца col матрицы mx
}

function SA(const mx: TMatrix; const col: Integer): Single;
var
  i: Integer;
  sr: Single;
begin
  sr := 0;
  for i := 1 to n do
   sr := sr + mx[i, col];
  SA := sr / n;
end;

{
 Среднее геометр. столбца col матрицы mx
}

function SG(const mx: TMatrix; const col: Integer): Single;
var
  i: Integer;
  p: Single;
begin
  p := 1;
  for i := 1 to n do
   p := p * mx[i, col];
  SG := p;
end;

var
  M: TMatrix;
  i: Integer;

begin
  clrscr;

  Create(M);
  Print(M);

  // сортируем все строки матрицы

  for i := 1 to n do
   SortRow(M, i);

  Print(M);

  writeln;

  // считаем среднее арифметическое и геометрическое для столбцов

  for i := 1 to n do
   writeln('i = ', i, '  SA = ', SA(M, i):3:3, '  SG = ', SG(M, i):3:3);

  readln;
end.
 
Lortine
good.gif yes2.gif yes2.gif Самый классный форум во всем рунете.!!!!
Пасибки огромное, с меня пиво если увидимся blum.gif
Единственное надо было вывести посортированную матрицу и она должна быть 5 на 5 но с этим я уже справлюсь, надеюсь rolleyes.gif (если не ттяжело можно и подкоректить)

Еще бы блок-схемку к этому чуду... и если есть у кого-то еще вариант решения этом задачки перед спасибо от своей одногрупницы give_rose.gif

ЗЫ... как "спасибо" нажать?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.