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

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

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

 
 Ответить  Открыть новую тему 
> Процедура обмена строк матрицы с условием, помогите написать процедуру....
сообщение
Сообщение #1


Новичок
*

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

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


Помогите написать процедуру которая бы меняла местами строки содержащие минимальный и максимальный по абсолютной величине элемент(в матрице)... заранее спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


А что не понятно? Покажи, что делал?
Пробегаешь по матрице, находишь минимум и максимум по модулям, запоминаешь номера содержащих эти элементы строк и меняшь местами..

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(Айра @ 19.12.2007 16:44) *

А что не понятно? Покажи, что делал?
Пробегаешь по матрице, находишь минимум и максимум по модулям, запоминаешь номера содержащих эти элементы строк и меняшь местами..



вот код, прога не меняет...
что нетак ?






program matrix;
Uses crt;

const
size_row = 10; { число строк }
size_col = 10; { число столбцов }

type
tvector = array[1 .. size_col] of integer;
tmatrix = array[1 .. size_row] of tvector;
var
mx: tmatrix;
i, j: integer;
n, m: integer;
NN, MM: integer;

procedure smena(var mx: tmatrix;m, n: integer);{процедура обмена строк}
var
i, j: integer;
T: integer;
min, max: integer;
imin, imax: integer;
begin
min:=abs(mx[1,1]);
imin:=1;
for i:=1 to n do
for j:=1 to m do

if (abs(mx[i,j])<min) then
begin
min:=abs(mx[i,j]);
imin:=i;
end;

for i:=1 to n do
for j:=1 to m do
begin
max:=-maxint;
imax:=1;
if max<abs(mx[i,j]) then
begin
max:=abs(mx[i,j]);
imax:=i;
end;
end;

begin
T := mx[imin, j];
mx[imin,j] := mx[imax, j];
mx[imax,j] := T;
end;
end; {end procedure}


begin
clrscr;
NN:=size_row;
MM:=size_col;

writeln('В заданной матрице поменять местами строки,');
writeln('содержащие следующие элементы:');
writeln('минимальный и максимальный по абсолютной величине.');

{ Заполнение матрицы }
repeat
write('Введите количество строк: '); readln(N)
until (n>0) and (n<=NN);
repeat
write('Введите количество столбцов: '); readln(m)
until (m>0) and (m<=MM);
For i:=1 to n do
begin
For j:=1 to m do
begin
write('mx[',i,j,']= ');
readln(mx[i,j])
end
end;

{ Матрица до обмена }
writeln('до:');
for i := 1 to n do
begin
for j := 1 to m do
write(mx[i,j]:4);
writeln
end;

{Вызов процедуры обмена строк по условию }
smena(mx, m, n);


{ Матрица после обмена }
writeln('после:');
for i := 1 to n do
begin
for j := 1 to m do
write(mx[i,j]:4);
writeln
end;
end.



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






procedure smena(var mx: tmatrix;m, n: integer);
var
i, j: integer;
T: tvector; { Иначе не понятно, для чего ты вообще описывал TVector }
min, max: integer;
imin, imax: integer;
begin
min:=maxint; imin:=1; { Минимуму присваивается МАКСИМАЛЬНО возможное значение }
for i:=1 to n do
for j:=1 to m do
if abs(mx[i,j]) < min then begin
min:=abs(mx[i,j]); imin:=i;
end;

max:=0; imax:=1; { а максимуму - наименьшее из возможных (если по абс. величине - то 0) }
for i:=1 to n do
for j:=1 to m do
if max < abs(mx[i,j]) then begin
max:=abs(mx[i,j]); imax:=i;
end;

T := mx[imin];
mx[imin] := mx[imax];
mx[imax] := T;
end; {end procedure}


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 28.03.2024 22:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name