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

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

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

> Задачи с матрицами, Задача по замене злементов матрицы
Dead.MorozZ
сообщение 9.11.2005 18:58
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

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


Помогите с задачкой справиться PlzZ:
1. Заменить
 Минимальный элемент в каждой строке на противоположный по знаку;
 Все элементы первых трех столбцов на их квадраты;
 Все симметричные элементы квадратной матрицы на нули.
2. Поменять местами
 Средние столбцы;
 Средние строки с первой и последней;
 Средние столбцы со вторым и предпоследним;
 Средние строки;
 Первый максимальный и последний минимальный элементы;
 В каждой строке первый отрицательный и последний положительный;
 Первую строку и строку, в которой находится первый нулевой элемент;
 Вторую и предпоследнюю строки;
 Первую строку с последней строкой, вторую – с предпоследней и так далее;


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 12)
volvo
сообщение 9.11.2005 19:09
Сообщение #2


Гость






To: Dead.MorozZ
Ты бы поиском сначала воспользовался. Ибо решать уже решенное (да еще и с таким количеством заданий) - nea.gif Вот если будут КОНКРЕТНЫЕ вопросы, тогда задавай...
 К началу страницы 
+ Ответить 
Dead.MorozZ
сообщение 9.11.2005 19:13
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

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


Может ссылку даш, а то найти не могу. А вопросы чувствую скоро появятсяsmile.gif


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.11.2005 19:20
Сообщение #4


Гость






Ну, например, при использовании вот этого:
FAQ: Как задать матрицу, чтобы быстро поменять местами...
все это:
Цитата
2. Поменять местами
 Средние столбцы;
 Средние строки с первой и последней;
 Средние столбцы со вторым и предпоследним;
 Средние строки;

делается одной строкой (!!!), я имею в виду каждый пункт - одна строка...
 К началу страницы 
+ Ответить 
Dead.MorozZ
сообщение 10.11.2005 19:44
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

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


Oбъясните, пожаловста, в подробностях как работает процедура по обмену строк (Swap_rows)


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 19:46
Сообщение #6


Гость






А какие тебе еще подробности? Как поменять местами 2 числа, знаешь (через дополнительную переменную)? Ну, так для Паскаля разницы между числом и строкой/столбцом (при том описании, которое я предложил) НЕТУ...
 К началу страницы 
+ Ответить 
klem4
сообщение 10.11.2005 19:49
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


надо поменять строку p со строкой q :

проходим по всем столбцам митрицы и меняем местами соответствующие элементы...


for j := 1 to m do begin
temp := x[q,j];
x[q,j]:= x[p,j];
x[p,j]:= temp;
end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dead.MorozZ
сообщение 10.11.2005 22:22
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

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


Volvo как исправить твою прогу с FAQ, чтоб в матрице появлялись и отрицательные элементы?javascript:emoticon(':wacko:')
smilie


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 10.11.2005 22:25
Сообщение #9


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Неужели так трудно догадаться ? Это конечно зависит он интеравала который тебе нужен, но можно например так :

x[i,j] := random(101) - 50;

будет интервал значений [-50..50];


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dead.MorozZ
сообщение 10.11.2005 22:34
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

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


Как найти максимальный элемент в строке/столбе??


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 22:42
Сообщение #11


Гость






To: Dead.MorozZ
Или ты начнешь пользоваться поиском и читать, а не бегло просматривать то, что написано в FAQ-е, или эта тема плавно переместится в мусорку. Поиск сразу же выдает 3 страницы ссылок, неужели кто-то должен искать ЗА ТЕБЯ?

Вот тут смотри: FAQ: решения: МАТРИЦЫ, МАССИВЫ (Задача №7) Принцип поиска по строке/столбцу такой же...
 К началу страницы 
+ Ответить 
Dead.MorozZ
сообщение 10.11.2005 23:35
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 108
Пол: Мужской
Реальное имя: Георгий

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


To: volvo
как в твоей проге одновременно менять местами и столбы и строки??


--------------------
Минус - это уже половина плюса, а плюс порой - целых два минуса...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.11.2005 1:15
Сообщение #13


Гость






Цитата
как в твоей проге одновременно менять местами и столбы и строки??

Гораздо проще, чем кажется:
const
size_row = 10; { число строк }
size_col = 10; { число столбцов }

type { это - матрица из строк }
tvector = array[1 .. size_col] of integer;
tVecmatrix = array[1 .. size_row] of tvector;

{ меняем строки местами }
procedure swap_rows(var mx: tVecmatrix;
const i, j: integer);
var T: tvector;
begin
T := mx[i]; mx[i] := mx[j]; mx[j] := T
end;

type { это - матрица из столбцов }
trow = array[1 .. size_row] of integer;
tRowmatrix = array[1 .. size_col] of trow;

{ меняем столбцы местами }
procedure swap_cols(var mx: tRowmatrix;
const i, j: integer);
var T: trow;
begin
T := mx[i]; mx[i] := mx[j]; mx[j] := T
end;

{ печатаем (матрицу СТРОК !!!) }
procedure print(var mx: tVecmatrix);
var i, j: integer;
begin
for i := 1 to size_row do
begin
for j := 1 to size_col do
write(mx[i][j]:4);
writeln
end;
end;

{ преобразуем матрицу строк -> матрицу столбцов }
procedure convert_vr(mv: tVecmatrix; var mr: tRowmatrix);
var i, j: integer;
begin
for i := 1 to size_row do
for j := 1 to size_col do
mr[j, i] := mv[i, j];
end;
{ обратное преобразование }
procedure convert_rv(mr: tRowmatrix; var mv: tVecmatrix);
var i, j: integer;
begin
for i := 1 to size_row do
for j := 1 to size_col do
mv[i, j] := mr[j, i];
end;


var
mx: tVecmatrix;
mr: tRowmatrix; { для промежуточных вычислений }
i, j: integer;

begin
for i := 1 to size_row do
for j := 1 to size_col do
mx[i][j] := random(100); { заполняем матрицу }

writeln('before:'); print(mx); { начальная матрица }

swap_rows(mx, 1, 5); { меняем 1 и 5 СТРОКИ местами }

convert_vr(mx, mr); { преобразуем в матрицу столбцов }
swap_cols(mr, 1, 5); { меняем местами 1 и 5 столбцы }
convert_rv(mr, mx); { и возвращаем назад -> матрицу строк }

writeln('after:'); print(mx); { полученная матрица }
end.
 К началу страницы 
+ Ответить 

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

 



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