Учебная работа. Курсовая работа: Разработка в среде Turbo Pascal программы сортировки элементов строк матрицы

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Разработка в среде Turbo Pascal программы сортировки элементов строк матрицы

Альметьевский муниципальный нефтяной институт

Кафедра информатики

КУРСОВЯ РАБОТА

ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

РАЗДЕЛ: Алгоритмический язык Pascal

НА ТЕМУ:

«Разработка в среде Turbo Pascal программки сортировки частей строк матрицы»

Альметьевск 2010 год

Решения задачки графическим и программным методами по теме «двумерные массивы»

Тема курсовой работы: «Разработка в среде Turbo Pascal программки сортировки частей строк матрицы».

Постановка задачки

Элементы четных строк матрицы размером n x m упорядочить по возрастанию, элементы нечетных строк- по убыванию. Для отладки программки элементы двумерного массива сформировать при помощи генератора случайных чисел.

Начальными данными являются элементы двумерного массива, которые должны быть сделаны по условию задачки при помощи генератора случайных чисел Random. Функция Random без параметра сформировывает вещественные числа в спектре [0,1]. Потому что по условию задачки элементами массива должны быть целые числа, то воспользуемся формулой Random(b-a+1)+a, которая будет выдавать случайные целые числа из спектра [a,b].

В итоге решения задачки будет найден четные строчки матрицы, элементы которой будут упорядочены по возрастания, и найдены нечетные строчки, элементы которой будут упорядочены по убыванию. Для сортировки (упорядочивания) строчки массива по возрастанию либо убыванию используем метод сортировки обменом.

Описание метода решения задачки
графическим методом

Укрупненная схема метода

Детализация укрупненной схемы метода

В программке решается 3 подзадачи:

1. Наполнение двумерного массива;

2. Сортирование частей четных строк по возрастанию, нечетных строк по убыванию;

3. Вывод перевоплощенного массива.

Ввод частей двумерного массива

Как оговаривалось в постановке задачки, ввод частей двумерного массива будем производить при помощи генератора случайныхчисел. Возьмем, например, интервал от -5 до 15. Тогда, используяформулу Random(b-a+1)+a, получим Random(21)-5. Таковым образом, любой очередной элемент массива будет представлять собой целоечисло из спектра [-5, 15] и выводится на экран. Цикл работает додостижения переменной i значения n, другими словами до конца массива. метод наполнения массива надлежащими числами указан ниже:

Сортирование частей четных строк по возрастанию, нечетных строк по убыванию

Сортирование частей четных строк по возрастанию работает последующим образом: сначала определяем, является ли строчка четной. Это определяется при помощи условия If I mod 2 =0, если строчка четная, то номер строчки делится на 2 без остатка.

Сначала находим элемент с минимальным значением (min) во всей строке и ставится на 1-ое пространство, а 1-ый элемент при всем этом ставится на пространство, где размещался меньший элемент. Потом меньший элемент отыскивается уже посреди чисел со второго по n элемент, и также изменяются местами малый посреди их и 2-ой элемент и т.д. Для того чтоб не терялись пространство, а крайний элемент при всем этом ставится на пространство, где размещался меньший элемент. Чтоб элемент не терялся используем переменную S.

Вывод перевоплощенного массива

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

Блок-схема метода

Разработка программки на языке Pascal

программка начинается со служебного слова Program, опосля которого следует заголовок программки. В данном случае это massiv. Дальше включаем раздел Uses для использования модуля CRT, который применяется для управления работой экрана в текстовом режиме. Опосля наименования программки и идентификации применяемых модулей следует раздел объявления констант (const) и переменных (var).

В данной программке в разделе констант объявлены константы n=4 (количество строк массива) и m = 5 (количество столбцов массива). В разделе переменных описан целочисленный массив под именованием a, целочисленные переменные i, j – счетчики циклов, min – малый элемент, imin – индекс малого элемента, minst – малый элемент столбца, k – вспомогательная переменная длясортировки частей.

тело программки либо раздел операторов начинается со слова begin и завершается end. В этом разделе описываем деяния, которые обязана выполнить программка согласно избранного метода. Потому что в программке предполагается ввод данных с экрана и вывод приобретенных результатов на экран, перед началом программки его нужно очистить от ненадобной инфы. Это проделываетпроцедура clrscr, которая описана в модуле Crt.

Перед первым воззванием к функции random нужно с по-мощью вызова процедуры randomize инициализировать программный генератор случайных чисел, по другому при любом запуске программки датчик будет выдавать одни и те же числа.

Описание блоков укрупненной схемы метода на языке Pascal

Ввод частей двумерного массива

Для того, чтоб откомментировать, что сначала будет выведен начальный массив на экран, используем оператор writeln (‘исходнаяматрица:’).

Рассмотренный фрагмент блок-схемы для реализации ввода частей двумерного массива на языке Pascal будет представлен в последующем виде:

for i:=1 to n do

begin

for i:=1 to n do begin

a[i,j]:=random(21)-5;

write(a[i,j]); end;

writeln;

end;

writeln;

Последующий дальше оператор writeln без характеристик просто переводит курсор на другую строчку. Это нужно для того, чтоб данные выводились на экран в виде матрицы. Добавим еще оператор writeln без характеристик для наиболее комфортного восприятия инфы с экрана.

Сортирование частей четных строк по возрастанию, нечетных строк по убыванию

Дальше начинаем обработку массива. Обработка массива осуществляется в цикле с параметром for i:=1 to n do по строчкам массива. Дальше при помощи условия определяем if i mod 2=0 then определяем четность строчки.

Задаем цикл с параметром for k:=1 to m do, k это переменная для обозначение столбца массива. Определяем 1-ый элемент массива как малый, для того чтоб можно было ассоциировать с ним остальные элементы и найти малый из их. Условием if a[i,j]<min сравниваются два элемента одной строчки. Если условие производится то в малый присваивается последующий элемент min:=A[i,j]. Потом меняем местами эти элементы. Переменная S используем промежный элемент для хранение элемента массива S:=A[i,k]. Позже заносим в массив A[i,k] малый элемент A[i,k]:=min, а в массив A[i,l] восстанавливаем

Если 1-ое условие не выполнилось if i mod 2=0 then то происходит сортировка нечетной строчки по убыванию.

Обработка массива начинается с цикла с параметром. Задаем переменную max, в эту перемену присваиваем

В переменную S заносим

for i:=1 to n do begin

if i mod 2=0 then for k:=1 to m do begin

min:=a[i,k];

for j:=k to m do

if a[i,j]<min then

begin min:=A[i,j]; l:=j;

S:=A[i,k];

A[i,k]:=min;

A[i,l]:=S end; end

else for k:=1 to m do begin

max:=a[i,k];

for j:=k to m do

if a[i,j]>max then

begin max:=A[i,j]; l:=j;

S:=A[i,k];

A[i,k]:=max;

A[i,l]:=S end; end;

end;

Вывод перевоплощенного массива

Опосля сортировки выводим приобретенный массив на экран обычными средствами вывода:

for i:=1 to n do

begin

for i:=1 to n do

write(a[i,j]:4);

writeln;

end;

где write(a[i,j]:4)– вывод частей двумерного массива в строчку

с указанием количества занимаемых позиций

Листинг программки

Program massiv;

Uses crt;

Const n=5; m=5;

Var a: array[1..n, 1..m] of integer;

i, j, k,min,max, l, s: integer;

Begin

Clrscr; randomize;

Writeln(‘начальный:’); begin

For i:=1 to n do

Begin

for j:=1 to m do begin

a[i,j]:=random(21)-5; write(a[i,j]:4); end;

writeln; End; Writeln;end;

for i:=1 to n do begin

if i mod 2=0 then for k:=1 to m do begin

min:=a[i,k];

for j:=k to m do

if a[i,j]<min then

begin min:=A[i,j]; l:=j;

S:=A[i,k];

A[i,k]:=min;

A[i,l]:=S end; end

else for k:=1 to m do begin

max:=a[i,k];

for j:=k to m do

if a[i,j]>max then

begin max:=A[i,j]; l:=j;

S:=A[i,k];

A[i,k]:=max;

A[i,l]:=S end; end;

end;

begin

writeln(итог:’); For i:=1 to n do Begin

for j:=1 to n do write(a[i,j]:4);

Writeln;

end; end;

readln;

End.

Тестирование программки

Ниже приведены результаты выполнения программки на примере разных входных данных.

Перечень применяемой литературы

1. А.И. Гусева. Обучаемся программировать: Pascal 7.0. М. диалог-мифи, 2000г.

2. А.Ф. Иванов, О.Н. Потапова, Г.Л. Салихова А. Главные методы языка Pascal, учебное пособие. 2007г.

3. А.Ф. Иванов А. Программирование на алгоритмическом языке Pascal, 2000г.

4. Семакин И.Г., Шестаков А.П. Базы программирования. М.:Академия, 2003г.

]]>