IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Матрицы, строки, Поменять местами строки!!!
LoveInLife
сообщение 25.03.2007 15:39
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Кирилл

Репутация: -  0  +



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 процедура нахождения СОРТИРОВКИ строк : Строку с наибольшим элементом нужно поменять на первую строку....плиззз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"