1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Program ObrMatr; { Пример 3 - 2007 } { Сортировка строк матрицы по главному столбцу (*Главный столбец - это столбец с минимальным элементом матрицы*) } Uses Crt; { Подключение модуля } Const R=9; { Размер строки (столбца) матрицы } Type Tind=1..R; { Тип индекса элемента матрицы } Tvect=Array[Tind] Of Integer; { Тип вектор целых чисел } Tmatr=Array[Tind] Of Tvect; { Тип матрица целых чисел } {$R+} Procedure SozdMatr(kStr,kStb:Tind; nd,kd:Integer; Var M:Tmatr); { Процедура заполнения матрицы случайными целыми числами заданного диапазона. Входные данные: kStr - количество строк матрицы, kStb - количество столбцов матрицы, nd - начало диапазона чисел, kd - конец диапазона чисел. Выходное данное: M - матрица. } Var i,j:Tind; Begin Randomize; For i:=1 To kStr Do For j:=1 To kStb Do M[i,j]:=Random(kd-nd+1)+nd; End;{ SozdMatr }
Function NomStrMax(kStr,kStb:Tind; Const M:Tmatr):Tind; { Функция определения номера столбца с минимальным элементом матрицы. Входные данные: kStr - количество строк матрицы, kStb - количество столбцов матрицы, M - матрица. Выходное данное: NomStrMax - номер стоки максимального элемента. } Var i,j,imax:Tind; max:Integer; Begin max:=M[1,1]; imax:=1; For i:=1 To kStr Do For j:=1 To kStb Do If M[i,j]>max Then Begin max:=M[i,j]; imax:=i End; NomStrMax:=imax End;{ NomStbMax }
Procedure SortMatr(kStr,jmin:Tind; Var M:Tmatr); { Процедура сортировки строк матрицы методом нахождения максимума. Входные данные: kStr - количество строк матрицы, imax - индекс строки максимального элемента, M - матрица. Выходное данное: M - упорядоченная матрица.} Var i,k,imax:Tind; strM:Tvect; Begin For i:=1 To kStr-1 Do Begin { Поиск очередного максимума в главном столбце: } imax:=i; For k:=i+1 To kStr Do If M[k,jmin]>M[imax,jmin] Then imax:=k; { Перестановка строк матрицы: } strM:=M[i]; M[i]:=M[imax]; M[imax]:=strM End; End;{ SortMatr }
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]:4); WriteLn End; End;{ OutMatr }
Const ND=-99; KD=-1; { Границы диапазона значений элементов матрицы } Var n,m,nStb:Tind; Matr:Tmatr; Begin Okno(1,1,80,25,0,15); { На черном фоне белый текст } Write('Размеры матрицы? '); ReadLn(n,m); Okno(3,3,25,15,2,15); { На зеленом фоне белый текст } WriteLn('Задача: В матрице из целых чисел поменять первую строку и строку, содержащую наибольший отрицательный элемент'); SozdMatr(n,m,ND,KD,Matr); { Создание матрицы } Okno(28,3,50,20,3,15); { На голубом фоне белый текст } WriteLn('Ввод данных:'); OutMatr(n,m,Matr); { Вывод матрицы } nStb:=NomStrMax(n,m,Matr); { Поиск столбца с минимумом } SortMatr(n,nStb,Matr); { Сортировка матрицы } Okno(53,3,77,20,4,15); { На голубом фоне белый текст } WriteLn('Вывод результата'); OutMatr(n,m,Matr); { Вывод матрицы } Okno(3,17,25,24,5,15); { На голубом фоне белый текст } WriteLn('Ошибка!'); ReadLn; End.
Помогите пожалуйста исправить Procedure SortMatr процедура нахождения СОРТИРОВКИ строк : Строку с наибольшим элементом нужно поменять на первую строку....плиззз