Помогите, пожалуйста, написать программу в MatLab.
Задача в следующем:
Создать двухмерный массив из случайных чисел размера M на N, в котором нечетные столбцы отсортировать по возрастанию, а четные по убыванию.
При этом для операций с матрицами не допускается использование стандартных функций.
Как создать массив я знаю, а вот что дальше?
Вторая задача похоже:
Создать двухмерный массив размера M на N из случайных чисел, в котором элементы в нечетных строках отсортировать по убыванию, а в четных по возрастанию. Вывести на экран суммы элементов четных и нечетных столбцов.
При этом для операций с матрицами не допускается использование стандартных функций.
>а вот что дальше?
перебираете столбец и используете любой из методов сортировки (так же, как и сортировали бы просто массив чисел) .
>Вывести на экран суммы элементов четных и нечетных столбцов.
аналогично, использовать способ выше, но для строк. после чего сложить столбцы как указано.
Писать за вас все не буду, но подскажу как сделать сортировку и подсчет суммы для первого варианта
Основной код (так как форматирование нарушится - можете посмотреть здесь http://pastebin.com/d46768CB )
clear all;
m = rand(6,4);
disp('Initial matrix:');
disp(m);
for k=1:size(m,2)
[m(:,k), s] = mysort(m(:,k), mod(k,2) == 1);
disp(['Sum for column ' num2str(k) ' = ' num2str(s)]);
end;
disp('Sorted matrix:');
disp(m);
и код функции сортировки/суммирования (копируется в отдельный файл с названием функции)
function [input, s] = mysort(input, order)
n = length(input);
s = 0;
for j=1:1:n-1
s = s + input(j);
for i=1:1:n-1
if order;
if input(i)>input(i+1);
temp = input(i);
input(i) = input(i+1);
input(i+1) = temp;
end
else
if input(i)
temp = input(i+1);
input(i+1) = input(i);
input(i) = temp;
end
end
end
end