![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
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 А то, что выше - это, извините, извращение... |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 22:15 |