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

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

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

 
 Ответить  Открыть новую тему 
> Матрицы, строки, Поменять местами строки!!!
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ты опять за свое? Тебе же сказали, что перестановка двух строк местами это НЕ сортировка!

Добавлено через 1 мин.
А как решается твоя задача я тебе уже показывал. Второй раз повторять не буду...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 1.11.2020 4:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name