Программирование с использованием массивов и подпрограмм. Описание алгоритма и программы. Текст программы

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

Алтайский государственный технический университет

им. И. И. Ползунова

Кафедра «Информационные системы в экономике»

ОТЧЕТ

о лабораторной работе № 6

по теме: «Программирование с использованием массивов и подпрограмм»

                        Выполнил :

Проверил : ассистент каф. ИСЭ

Барнаул 2009

Содержание

1 Постановка задачи………………………………………………….…………………………..3

2 Описание алгоритма……………………………………………….………………………….. 3

3 Описание программы……………………………….…………………………………….…….3

Приложение А Текст программы………………………………………………………….…….7

Приложение Б Тесты…………………………………………………………………..………..10

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

Дана целая прямоугольная матрица размерности NxM. Найти среднее арифметическое элементов каждого столбца и упорядочить столбцы по возрастанию этих элементов. (При сортировке использовать метод прямого включения).

2.  Описание алгоритма

Структурная схема алгоритма представлена на рисунках 1,2,3,4.

Текст программы представлен в приложении А. Тестовый пример представлен в приложении Б.

3.  Описание программы

В программе используется константа const Size=15 – максимальная размерность матрицы.

В программе используются типы:

MatrI = array[0..Size,0..Size] of Integer;

- тип для матрицы А;

MatrASred = array[0..Size] of Integer;- тип для матрицы С –матрицы для запоминания среднего арифметического элементов столбцов А.

В процедуре Sort упорядочивания методом прямого включения используются следующие переменные:

i,j,k :integer -  счетчики,

MNew :integer -  переменная, необходимая для перестановки   столбцов ,

x:integer - Вспомогательная переменная

В процедуру из основной программы передаются массивы A и Sr (как параметры - переменные), а также размерность матрицы N и M (как параметры - значения).

В процедуру  ввода матрицы MatrixInput  матрица A: MatrI передается как параметр – переменная, размерность N,M: integer передается как параметр – значение. В процедуре используются счетчики цикла i,j : integer.

В процедуру  вывода матрицы MatrixOutput  матрица A: MatrI передается как параметр – значение, размерность N,M : integer также передается как параметр – значение. В процедуре используются счетчики цикла i,j : integer.

В основной программе используются переменные

i,j :integer  - Счетчики цикла,

N,M:integer;- Размерность матрицы N x M,

A: MatrI - Вводимая матрица,

Sr: MatrASred - матрица, содержащая среднее арифметическое каждого столбца.

 


 


 


                       

Рисунок 1 – структурная схема алгоритма основной программы

 
 


                                                             

                                                             

Рисунок 4 – структурная схема процедуры Output

 
 


Приложение А

Текст программы

Program Lab6;

Uses Crt;

const Size=15;

type

MatrI = array[0..Size,0..Size] of Integer;

MatrASred = array[0..Size] of Integer;

{---------------------------------------------------------------------------}

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

Procedure MatrixInput(Var A: MatrI; N,M : integer);

var

i,j : integer;

begin

if ((N<=0) or (M<=0)) then

begin

writeln('Количество строк или столбцов не может быть равно нулю.');

exit;

end;

if ((N>Size) or (M>Size)) then

begin

writeln('Матрица должна иметь размерность не более(15x15).');

exit;

end;

writeln('Введите матрицу A построчно:');

for i:=1 to N do

for j:=1 to M do

read(A[i][j]);

end;

{--------------------------------------------------------------------------}

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

Procedure MatrixOutput(A: MatrI; Sr:MatrASred ; N,M :integer);

var

i,j : integer;

begin

{Выводим}

writeln('Упорядоченный массив, содержащий среднее арифметическое значение столбцов:');

for i:=1 to M do

write(Sr[i],' ');

writeln;

{Выводим  матрицу}

writeln('Упорядоченная матрица A:');

for i:=1 to N do

begin

for j:=1 to M do write(A[i][j],' ');

writeln;

end;

end;

{---------------------------------------------------------------------------}

{Процедура упорядочивания методом прямого включения}

Procedure Sort(var A: MatrI;var Sr:MatrASred ; N,M :integer);

var

i,j,{счетчики}

k,  {счетчик}

MNew, {вспомогательная переменная, необходимая для перестановки столбцов}

x:integer;    {Вспомогательная переменная}

begin

{сортировка методом прямого включения}

for i:=2 to M do

begin

MNew:=Sr[i];

Sr[0]:=MNew; {чтобы при сортировке не выходить за пределы массива}

j:=i;

while (MNew > Sr[j-1]) do {Найден элемент с меньшим ключом}

begin

for k:=1 to N do {Переставляем элементы в исходной матрице}

begin

x:= A[k][j];

A[k][j]:=A[k][j-1];

A[k][j-1]:=x;

end;

Sr[j]:=Sr[j-1];

j:=j-1;

end;

Sr[j]:=MNew;

end;

end;

{--------------------------------------------------------------------------}

Var i,j,          {Счетчики цикла}

N,M:integer;  {Размерность матрицы N x M}

A: MatrI;     {Вводимая матрица}

Sr: MatrASred; {Строка, содержащая среднее арифметическое каждого столбца}

Begin

clrscr;

{ввод данных}

writeln('Введите количество строк:');

readln(N);

writeln('Введите количество столбцов:');

readln(M);

{Вызов процедуры ввода матрицы}

MatrixInput(A,N,M);

{Поиск среднего арифметического}

for i:=1 to M do

begin

{Складываем в цикле элементы столбца}

for j:=1 to N do

Sr[i]:=A[j][i]+Sr[i];

{Определяем среднее арифметическое столбца}

Sr[i]:=round(Sr[i]/N);

end;

{Выводим среднее арифметическое столбцов}

writeln('Среднее арифметическое значение столбцов:');

for i:=1 to M do

write(Sr[i],' ');

writeln;

{Вызов процедуры сортировки матрицы А}

Sort(A,Sr,N,M);

{Вывод результата}

MatrixOutput(A,Sr,N,M);

End.

Приложение Б

Тест

Введите количество строк:                                                  

4

Введите количество столбцов:

6

Введите матрицу A построчно:

1 2 3 4 5 6

3 5 5 3 5 5

2 2 2 2 2 2

2 3 6 3 0 3

Среднее арифметическое значение столбцов:

2 3 4 3 3 4

Упорядоченный массив, содержащий среднее арифметическое значение столбцов:

4 4 3 3 3 2

Упорядоченная матрица A:

3 6 2 4 5 1

5 5 5 3 5 3

2 2 2 2 2 2

6 3 3 3 0 2

Похожие материалы

Информация о работе