Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на массив
Форум «Всё о Паскале» > 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

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