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

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

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

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


Гость






Задача такая: Дана матрица А (m.n). Надо из матрицы А сделать матрицу B так,чтобы все столбцы матрицы А были упорядочены по убыванию максимальных элементов.Заранее спасибо. Пршограмма на паскале должна быть.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Katenok8777
сообщение 27.07.2005 13:22
Сообщение #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 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 20.07.2025 22:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"