Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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; Прочитано: 366 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!