Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





Составить процедуру сортировки по убыванию значений элементов одномерного массива. Используя ее отсортировать элементы в каждом столбце прямоугольной матрицы.

Пусть задана матрица А, содержащая n строк и m столбцов, описана процедура Sort сортировки одномерного массива C, например методом максимального элемента (выбора). Чтобы организовать сортировку столбцов матрицы, после ввода элементов матрицы необходимо предусмотреть цикл по номерам столбцов матрицы. Поскольку процедура сортировки обеспечивает преобразование только одномерного массива, необходимо на каждом шаге внешнего цикла с помощью дополнительного цикла по номерам строк матрицы преобразовать очередной ее столбец в одномерный массив С и обратиться к процедуре Sort. Полученный отсортированный массив записывается на место исходного столбца матрицы. В конце программы осуществляется вывод преобразованной матрицы А.

На рис. 4.1 приведены алгоритмы ввода и вывода столбцов прямоугольной матрицы. Алгоритм сортировки прямоугольной матрицы А представлен на рис. 4. 2, где ввод и вывод матрицы А, также оформлен в виде соответствующих процедур.

 


Процедура ввода матрицы

i= 1, n
j =1, m  
InArr (n, m)
Ввод aij
InArr (A)

Процедура вывода матрицы

i= 1, n
j =1, m  
OutArr (A,n, m)
Вывод aij
OutArr


 

Рис. 4.1. Схема алгоритма ввода и вывода столбцов прямоугольной матрицы.

 

 


Начало
Ввод исходных данных
i= 1, n-1
Преобразование столбца в массив С
Sort (C, n)
Запись массива в столбец
Вывод матрицы
Конец

 


Процедура сортировки элементов одномерного массива

Sort (C, n)
Ввод исходных данных
i= 1, n-1
max=ci k=i
j = i+1, n  
cj>max
max=cj k=j
да
нет
ck=ci ci=max
Sort (C, n)


Рис. 4.2. Схема алгоритма сортировки столбцов прямоугольной матрицы.

 


{Цель: сортировка столбцов прямоугольной матрицы }

{Параметры и переменные: а-двумерный массив, с-одномерный массив }

{n –число строк, m-число столбцов, Nmax,Mmax-максимально }

{допустимое число строк и столбцов, }

{ Vector – тип одномерного массива, }

{ Matrix-тип двумерного массива }

program SortingColumn;

Const

Nmax=20;

Mmax=20;

Type

Vector=array[1..Nmax] of real;

Matrix=array[1..Nmax,1..Mmax] of real;

Var

a:Matrix;

c:Vector;

i,j,m,n:integer;

{процедура ввода двумерного массива }

{Параметры;a-двумерный массив;n-число строк; }

{m-число столбцов;i,j-параметры циклов }

{Name-имя массива }

Procedure InArr(n,m:integer; Var a:Matrix; Name:Char);

var

i,j:integer;

Begin{InArr}

Writeln('введите',n*m,'элементов матрицы',Name);

for i:=1 to n do

for j:=1 to m do

begin

Write(Name,'[',i,',',j,']=');

read(a[i,j])

end

end;{InArr}

{процедура вывода двумерного массива }

{Параметры;a-двумерный массив;n-число строк; }

{m-число столбцов;i,j-параметры циклов }

Procedure OutArr(var a:Matrix;n,m:integer);

var

i,j:integer;

begin{OutArr}

for i:=1 to n do

begin

for j:=1 to m do

write(a[i,j]:6:2);

Writeln

end

End;{OutArr}

{процедура сортировки одномерного массива}

{Параметры: с-одномерный массив;n-размер массива;}

{k-номер максимального элемента; i,j-параметры циклов}

{Max- максимальный элемент}

procedure Sort(var c:Vector;n:integer);

Var

i,j,k:integer;

Max:real;

Begin{Sort}

For i:=1 to n-1 do

begin max:=c[i];

for j:=i+1 to n do

if c[j]>Max then

begin

Max:=c[j];

k:=j

end;

c[k]:=c[i];

c[i]:=max

end

end;{Sort}

Begin {SortingColumn}

Writeln('введите число строк и столбцов матрицы A');

read(n,m);

InArr(n,m,a,'a');{ввод матрицы A}

Writeln('исходная матрица');

OutArr(a,n,m);{вывод результата}

for j:=1 to m do

begin

{Преобразование столбца в одномерный массив}

for i:=1 to n do

c[i]:=a[i,j];

Sort(c,n);{Сортировка столбца}

{Запись массива в столбец матрицы }

for i:=1 to n do

a[i,j]:=c[i]

end;

Writeln('преобразованная матрица');

Outarr(a,n,m);{вывод результата}

End.{SortingColumn}


СТРОКИ

Date: 2015-10-21; view: 945; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию