![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Katenok8777 |
![]()
Сообщение
#1
|
Гость ![]() |
Задача такая: Дана матрица А (m.n). Надо из матрицы А сделать матрицу B так,чтобы все столбцы матрицы А были упорядочены по убыванию максимальных элементов.Заранее спасибо. Пршограмма на паскале должна быть.
|
![]() ![]() |
Katenok8777 |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Uses Crt; {для того, чтобы вызывать ClrScr и др }
Const M = 2; {кол-во строк} N = 3; {кол-во столбцов} Type MyType = integer; {здесь можно менять тип элементов матрицы} TMyMatrix = array[1..M, 1..N] of MyType ; {для передачи матриц параметром в функцию, для меньшей писанины, в общем, для удобства} Var A, B: TMyMatrix; {исходная и результирующая матрицы} used: array [1..N] of byte;{массив для отметки использованных столбцов при поискке максималньго элемента матрицы} i, j: integer; {переменные для циклов} procedure Proceed(SrcMtr: TMyMatrix; var DstMtr: TMyMatrix); var cc:integer; {счетчик для количества пройденных столбцов} CurMax: mytype; {текущий максимальный элемент} CurColumn:integer; {столбец максимального элемента} begin cc := 1; for i := 1 To N do used[i] := 0; while (cc <= N) do begin {берем первый элемент в первом найденном неиспользованном столбце} for i := 1 To N do if (used[i] = 0) then begin CurMax := SrcMtr[1, i]; CurColumn := i; break; end; {находим максимум и его столбец} for i := 1 to M do for j := 1 to N do if used[j] = 0 then if(SrcMtr[i, j] > CurMax) then begin CurMax := SrcMtr[i, j]; CurColumn := j; end; {заполняем столбец результирующей матрицы} for i := 1 To M do DstMtr[i, cc] := SrcMtr[i, CurColumn]; Inc(cc);{прибавляем счетчик использованных столбцов} used[CurColumn] := 1; {отмечаем, что столбец использован} end; end; {процедура для вывода матрицы на экран} procedure WriteMatrix(Mtr: TMyMatrix); var i, j:integer; begin for i := 1 To M do begin for j := 1 To N do begin Write(Mtr[i, j]:5, ' '; end; WriteLn; end end; Begin ClrScr; {вводим элементы матрицы - каждый вводим enter ом. Если поменяшь mytype на real, то десятые вводятся точкой} for i := 1 To M do for j := 1 To N do begin Write('Enter matrix element [', i,',',j, ']: '; ReadLn(A[i, j]); end; {выведем исходнуюматрицу на экран} WriteLn; WriteLn('Source matrix:'; WriteMatrix(A); {заполним результирующую по нашему алгоритму} Proceed(A, B); {выведем результирующую матрицу на экран} WriteLn('Result matrix:'; WriteMatrix(B); {ждем нажатия клавиши} ReadKey; End. Что тут не так???? |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(Katenok8777 @ 27.07.05 13:22) Что тут не так???? ВСЁ !!! И потом, теги CОDE к Вам не относятся? TMyMatrix = array[1..M, 1..N] of MyType; ЭТО - не удобство !!! Удобно - это когда столбцы меняются одним оператором: Const А то, что выше - это, извините, извращение... |
![]() ![]() |
![]() |
Текстовая версия | 7.09.2025 14:32 |