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

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

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

> Матричная задачка на паскале.
сообщение
Сообщение #1


Гость






Задача такая: Дана матрица А (m.n). Надо из матрицы А сделать матрицу B так,чтобы все столбцы матрицы А были упорядочены по убыванию максимальных элементов.Заранее спасибо. Пршограмма на паскале должна быть.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


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.
Что тут не так????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(Katenok8777 @ 27.07.05 13:22)
Что тут не так????

ВСЁ !!!
И потом, теги CОDE к Вам не относятся?

TMyMatrix = array[1..M, 1..N] of MyType;
{для передачи матриц параметром в функцию,
для меньшей писанины, в общем, для удобства}

ЭТО - не удобство !!! Удобно - это когда столбцы меняются одним оператором:
Const
size_col = 6; { число столбцов }
size_row = 8; { число строк }
Type
TColumn = Array[1 .. size_row] Of Integer;
TMatrix = Array[1 .. size_col] Of TColumn;
...
Var
mx: TMatrix;
T: TColumn;
...
T := mx[1]; mx[1] := mx[2]; mx[2] := T;

А то, что выше - это, извините, извращение...
 К началу страницы 
+ Ответить 

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


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

 





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