Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример программы. {Программа поиска и перестановки в матрице двух строк:



Program ObrMatr;

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

строки с минимальным и строки с максимальным элементом}

Uses Crt; {Подключение модуля}

Const

R=10; {Размер строки (столбца) матрицы}

Type

TInd=1..R; {Тип индекса элемента матрицы}

TElem=Integer; {Тип элемента матрицы}

TVect=Array[Tind] Of TElem; {Тип вектор}

TMatr=Array[Tind] Of TVect; {Тип матрица}

{$R+}

Procedure InMatr(kStr,kStb:TInd;Var M:TMatr);

{Процедура ввода значений элементов матрицы.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы.

Выходное данное: M - матрица.}

Var

i,j:TInd; {Локальные переменные}

Begin

WriteLn('Вводите матрицу по строкам:');

For i:=1 To kStr

Do Begin

For j:=1 To kStb

Do Read(M[i,j]);

ReadLn;

End;

End;{InMatr}

Function NomMin(kStr,kStb:TInd; Const M:TMatr):TInd;

{Функция определения номера строки с минимальным элементом.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица.

Выходное данное: NomMin - номер строки с миним. элементом.}

Var

i,j,nmin:TInd;

min:TElem; {Локальные переменные}

Begin

min:=M[1,1]; nmin:=1;

For i:=1 To kStr

Do For j:=1 To kStb

Do If M[i,j]<min

Then Begin

min:=M[i,j];

nmin:=i;

End;

NomMin:=nmin;

End; {NomMin}

Function NomMax(kStr,kStb:TInd; Const M:TMatr):TInd;

{Функция определения номера строки с максимальным элементом.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица.

Выходное данное: NomMax - номер строки с макс. элементом.}

Var

i,j,nmax:TInd;

max:TElem; {Локальные переменные}

Begin

max:=M[1,1]; nmax:=1;

For i:=1 To kStr

Do For j:=1 To kStb

Do If M[i,j]>max

Then Begin

max:=M[i,j];

nmax:=i;

End;

NomMax:=nmax;

End; {NomMax}

Procedure ObmenStr(kStr,kStb:TInd; Var M:TMatr);

{Процедура перестановки строк с минимальным и максимальным элементом.

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица целых чисел.

Выходное данное: M - преобразованная матрица.}

Var

strM:TVect;

nmin,nmax:TInd; {Локальные переменные}

Begin

nmin:=NomMin(kStr,kStb,M);

nmax:=NomMax(kStr,kStb,M);

If nmin<>nmax

Then Begin

strM:=M[nmin];

M[nmin]:=M[nmax];

M[nmax]:=strM;

End;

End; {ObmenStr}

Procedure Okno(x1,y1,x2,y2,cf,ct:Byte);

{Процедура формирования окна}

Begin

Window(x1,y1,x2,y2); {Установка параметров окна}

TextBackGround(cf); {Установка цвета фона}

TextColor(ct); {Установка цвета текста}

ClrScr; {Очистка окна}

End;{Okno}

Procedure OutMatr(kStr,kStb:TInd; Const M:TMatr);

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

Входные данные: kStr - количество строк матрицы,

kStb - количество столбцов матрицы,

M - матрица.}

Var

i,j:TInd; {Локальные переменные}

Begin

For i:=1 To kStr

Do Begin

For j:=1 To kStb

Do Write(M[i,j]:3);

WriteLn;

End;

End;{OutMatr}

Var

n,m,nStb:TInd;

Matr:TMatr;

Begin

Okno(1,1,80,25,0,15); {На черном фоне белый текст}

Write('Размеры матрицы? ');

ReadLn(n,m);

Okno(1,6,38,20,2,15); {На зеленом фоне белый текст}

InMatr(n,m,Matr); {Ввод матрицы}

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

OutMatr(n,m,Matr); {Вывод матрицы}

ObmenStr(n,m,Matr); {Перестановка строк}

Okno(40,6,80,20,3,15); {На голубом фоне белый текст}

WriteLn('Матрица после перестановки строк');

OutMatr(n,m,Matr); {Вывод матрицы}

ReadLn;

End.





Дата публикования: 2014-11-03; Прочитано: 364 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...