Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица, Транспонирование матрицы с использованием процедуры.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Credo
Помогите.
Описать процедуру Transp(A,m), выполняющую транспонирование квадратной вещественной матрицы А порядка М. Двумерный массив А - входной и выходной параметр, М-входной параметр. Использовать эту процедуру для транспонирование данной матрицы А порядка М.

no1.gif Матрицу незнаю совсем, можете привести пример для данной задачи.
TarasBer
> Матрицу незнаю совсем

var a: array [0 .. m-1, 0 .. m-1] of extended;

вот тебе матрица
Credo
Цитата(TarasBer @ 24.11.2010 15:48) *

> Матрицу незнаю совсем

var a: array [0 .. m-1, 0 .. m-1] of extended;

вот тебе матрица

а это ясно, мне бы пример для данной задачи)) можно?
мисс_граффити
Транспонировать - значит, каждый элемент [i,j] поменять местами с элементом [j,i].
TarasBer
Кстати, почему в названии темы нету ни слова "транспонирование", ни слова "матрица"?
Credo
Цитата
Транспонировать - значит, каждый элемент [i,j] поменять местами с элементом [j,i].

Спасибо, постораюсь чтот сделать.

Цитата
Кстати, почему в названии темы нету ни слова "транспонирование", ни слова "матрица"?

Ок, буду знать
TarasBer
> Ок, буду знать

Ну и? Отредактируй же название темы.
Credo
Цитата
Ну и? Отредактируй же название темы.

cool.gif сделал
Credo
У меня куча ошибок. помогите исправьте подскажите.

program proc;
uses crt;
const n=5;
type
matrix=array [0..n-1,0..n-1] of extended;

{---------------------------------------------------------------------------}

procedure vvod(var a:matrix; n:byte);
var
i,j:byte;
BEGIN
writeln('Исходная матрица: ');
for i:=1 to n do
a[i]:=random(n);
for j:=1 to n do
a[j]:=random(n);
write(a[i,j]);

{---------------------------------------------------------------------------}

Procedure Transp(var a:matrix; n:byte);
Var
i,j:byte;
BEGIN
for i:=1 to n do
begin
for j:=1 to n do
a[j,i]:=a[i,j];
End;
writeln;

{---------------------------------------------------------------------------}

begin

clrscr;
vvod(matrix);
transp(matrix);
end.


Изображение
Unconnected
А у тебя там end-ов не хватает, посмотри внимательно.
Credo
Да, не компилируется. где я еще ошибся ((
volvo
Да много где. У тебя матрица - два измерения, а ты заполняешь ее по одному?

procedure vvod(var a:matrix; n:byte);
var
i, j: byte;
BEGIN
writeln('Исходная матрица: ');
for i:=0 to n-1 do
for j:=0 to n-1 do { раз написал, что индексы от 0 (кому это надо - непонятно) }
begin
a[i, j]:=random(n); { <--- Вот оно, правильное обращение к элементу... }
write(a[i,j]);
end;
end;

Аналогично с индексами исправляй в другой процедуре.

И еще: ты не боишься, что перенесешь ДВАЖДЫ каждый элемент, и в итоге матрица останется прежней? Все-таки надо как-то ограничить цикл, чтоб этого не произошло...
Credo
Цитата
У меня куча ошибок

Цитата
Да много где

Знаю smile.gif

Цитата
Аналогично с индексами исправляй в другой процедуре.

И еще: ты не боишься, что перенесешь ДВАЖДЫ каждый элемент, и в итоге матрица останется прежней? Все-таки надо как-то ограничить цикл, чтоб этого не произошло...

Спасибо вам, буду разбиратся.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.