![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Katenok8777 |
![]()
Сообщение
#1
|
Гость ![]() |
Задача такая: Дана матрица А (m.n). Надо из матрицы А сделать матрицу B так,чтобы все столбцы матрицы А были упорядочены по убыванию максимальных элементов.Заранее спасибо. Пршограмма на паскале должна быть.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Алгоритм такой:
1. Описываешь массив Max размером N (я правильно понимаю, что это - число столбцов? ![]() 2. В каждый элемент этого массива заносишь максимум соответствующего столбца матрицы A... 3. Копируешь всю матрицу A в матрицу B... 4. Сортируешь матрицу В вместе с массивом Max любым алгоритмом сортировки (для примера - "пузырьком") примерно так, как это было сделано здесь: задачка на двумерный массив, только вместо If mx[Pred(j)][k] > mx[j][k] Then Begin делать так: If max[Pred(j)] > max[j] Then Begin |
Guest |
![]()
Сообщение
#3
|
Гость ![]() |
А ты не мог бы полностью написать прогу,дело в том что мне 28 числа все нужно сдавать,а у менЯ еще несколько прог,простых,которые я сейчас делаю
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
:no: Нет, полностью программы я НЕ пишу.
Я могу помочь решить задачу, но не решать ее ЗА КОГО-ТО... |
Katenok8777 |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 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 |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата(Katenok8777 @ 27.07.05 13:22) Что тут не так???? ВСЁ !!! И потом, теги CОDE к Вам не относятся? TMyMatrix = array[1..M, 1..N] of MyType; ЭТО - не удобство !!! Удобно - это когда столбцы меняются одним оператором: Const А то, что выше - это, извините, извращение... |
Katenok8777 |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Зачем мне использовать массив,если у меня дана матрица и с ней же должно быть проще?
|
Katenok8777 |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Пожалуйста напиши мне полностью программу в долгу не останусь,обещаю,мне очень срочно нужно. :molitva:
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Const Больше полностью ничего не буду делать... Все уже было написано во 2-ом посте, нужно было ТОЛЬКО собрать это в одну программу, неужели это НАСТОЛЬКО трудно? |
Katenok8777 |
![]() ![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
огромное тебе спасибо,как будем расчитываться?
|
![]() ![]() |
![]() |
Текстовая версия | 1.09.2025 20:28 |