Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 14:39   #1
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию Транспортировать матрицу

Требуется транспортировать матрицу, то есть поменять столбцы со строками
например
123
123
123

надо в 111
222
333
sidestep вне форума Ответить с цитированием
Старый 24.09.2011, 14:39   #2
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

на Паскале
sidestep вне форума Ответить с цитированием
Старый 24.09.2011, 15:23   #3
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

Вся программа цикл в цикле,
A[i,j] меняется A[j,i]
Указать от чего i меняется, а от чего j
sidestep вне форума Ответить с цитированием
Старый 24.09.2011, 15:27   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сделаю за 50 рублей.
Вадим Мошев вне форума Ответить с цитированием
Старый 24.09.2011, 15:57   #5
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

нее какие деньги?
я 2 дня назад начал изучать паскаль
вот написал
где ошибки и как надо дописать?
Код:
program trans;
var i,j,n,k :integer;
A: array[1..n,1..n] of integer;
begin
read(n);
for i:=1 to n do
  for j:=1 to n do
   begin
     A[i,j]:=k;
     A[j,i]:=A[i,j];
     A[j,i]:=k;
   end;
write(A[i,j],A[j,i]);
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.09.2011 в 16:04.
sidestep вне форума Ответить с цитированием
Старый 24.09.2011, 16:05   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Ага, хорошо...
Код:
var i,j,n,k :integer;
A: array[1..n,1..n] of integer;
Размер для переменной должен быть известен в момент её объявления. Но у вас не известно, сколько памяти выделять под массив. Рекомендую написать так:
Код:
var i,j,n,k :integer;
A: array[1..10,1..10] of integer;
Кстати, вам надо получить транспонированную матрицу, или же просто вывести на экран исходную, но в транспонированном виде?

Последний раз редактировалось Вадим Мошев; 24.09.2011 в 16:07.
Вадим Мошев вне форума Ответить с цитированием
Старый 24.09.2011, 16:09   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас в коде ошибка. дело в том, что Вы сначала меняете два элемента местами, потом, когда цикл доходит до элемента, который ранее был поменен, меняет его ещё раз (он становится на место.

самый простой способ решения - воспользоваться дополнительным массивом, куда и переносить данные.

есть и более сложные (в написании алгоритма) способы, не требующие дополнительной памяти.
Зато они потребуют чёткого представления, какой элемент на какое место должен быть поставлен...


Цитата:
Рекомендую написать так:
Код:
A: array[1..10,1..10] of integer;
а я рекомендую написать так:
Код:
const n = 10;
var 
  A: array[1..n,1..n] of integer;
...

Цитата:
Сообщение от Вадим Мошев
Кстати, вам надо получить транспонированную матрицу, или же просто вывести на экран исходную, но в транспонированном виде?
Кстати, да! Это принципиально важный вопрос!

Последний раз редактировалось Serge_Bliznykov; 24.09.2011 в 16:12.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2011, 16:09   #8
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

да исходную матрицу в транспонированном виде
sidestep вне форума Ответить с цитированием
Старый 24.09.2011, 16:11   #9
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

Код:
program trans;
var i,j,k :integer;
A: array[1..10,1..10] of integer;
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
A[i,j]:=k;
A[j,i]:=A[i,j];
A[j,i]:=k;
end;

Не знаю что дальше писать

end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.09.2011 в 16:14.
sidestep вне форума Ответить с цитированием
Старый 24.09.2011, 16:15   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Ну, тогда чтобы вам была пища для размышления, не буду писать полностью прогу, а только вывод.

Код:
for i:=1 to n do
	begin
	for j:=1 to n do
			write(A[j, i], ' ');

	WriteLn;
	end;
P.S. sidestep
Для того, чтобы опубликовать код, пользуйтесь кнопочкой
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как умножить матрицу(3на4) на матрицу(4на3) в делфи? Ромка678 Помощь студентам 1 28.11.2009 08:01
Задача на матрицу VNS Помощь студентам 2 22.11.2009 13:47
Создать матрицу Chertenok666 Помощь студентам 16 14.11.2009 16:14
Объясните пожалуйста как можно считать значения в этом файле в вектор, 4 -ую матрицу, 6-ую матрицу ciaonataha Помощь студентам 1 30.03.2009 20:57