Помощь - Поиск - Пользователи - Календарь
Полная версия: Транспонирование матрицы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Начинающий
Здравствуйте
вот моя прога
Program matrixx (Input, Output);
Const
k=10;
Type
matrix= Array [0..k, 0..k] of integer;
Var
matrix1: matrix;
i, j, n, temp:Integer;
{процедура транспонирования}
Procedure transp;
Begin
For i := 0 to n-1 do
For j := 0 to n do
Begin
temp:= matrix1[i,j];
matrix1[i,j]:= matrix1[j,i];
matrix1[j,i]:= temp;
end;
{matrix2 [i, j] := matrix1 [j, i];};
end;

Procedure readMatrix;
Begin
Write ('Введите размерность матрицы: ');
ReadLn (n);
WriteLn ('Введите элементы таблицы:');
For i := 1 to n do
For j := 1 to n do
Begin
Write ('элемент [', i, ',', j, '] = ');
ReadLn (matrix1 [i, j] );
End;
End;

Procedure writeMatrix;
Begin
For i := 1 to n do
Begin
For j := 1 to n do
Write (matrix1 [i, j] : 6);
WriteLn;
End;
End;

Begin
WriteLn ('Транспонирование матрицы.');
readMatrix;
WriteLn;
writeMatrix;
transp;
WriteLn;
WriteLn('Транспонированная матрица:');
writeMatrix;
ReadLn;
END.

У меня проблема с процедурой транспонирования, начиная с матрицы размерностью 3, транспонированная матрица начинает выводится не правильно, помогите пожалуйста. Транспонирование в этой прграмме должно происходить только с одним массивом, без вспомогательного. smile.gif Очень нуждаюсь в вашей помощи.

М

Начинающий, начинай для своих вопросов новые темы, а не задавай их в старых.

И пользуйся тегом [соde]

hiv
Мда... проблемы с индексами.
Вы определяете массив элементы которого нумеруются от 0 до k.
Код
Type matrix= Array [0..k, 0..k] of integer;
Потом почему-то вставляете элементы матрицы с 1, а не с нуля.
Код
For i := 1 to n do
For j := 1 to n do
А при транспонировании снова начинаете отчет с нуля:
Код
  For i := 0 to n-1 do
   For j := 0 to n do
В общем если хорошенько подумаете и приведете использование индексов массива к одному виду, то программа будет работать правильно! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.