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

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

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

 
Closed Topic Открыть новую тему 
> Перестановка рядком в матрице, меняем рядки матрицы местами
сообщение
Сообщение #1


Новичок
*

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

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


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


Гость






В поиск... Еще на этой странице есть подобная тема, ты уже опять задаешь этот вопрос...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Я создал одномерный массив записей В, в котором в 1 поле записываю значение сумм, во 2 поле- индекс строчки в двумерном массиве А. Потом сортирую значения сумм в поле массива записей . Подскажи мне как в новую двумерную матрицу записать строчки в порядке возрастания, используя поле индексов в массиве записей В.
const n=4; m=5;
type ccc=record
z:integer;
n:integer;
end;
var d,s:integer; A,c:array[1..n,1..m]of integer; i,j:byte;B:array[1..n]of ccc;
bb:array[1..n]of integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
writeln('vvedi el ',i,' i ',j,' ');
readln (A[i,j]);
end;
for i:=1 to n do
begin
s:=0;
for j:=1 to m do
if (not odd(A[i,j])) and (A[i,j]<0) then inc(s,A[i,j]);
B[i].z:=s; B[i].n:=i;
end;
for i:=1 to n do
write(' ',B[i].z);
writeln;
for j:=1 to n-1 do
for i:=1 to n-1 do
if B[i].z<B[i+1].z then begin d:=b[i].z; b[i].z:=b[i+1].z; B[i+1].z:=d; end;

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


Гость






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

Type
arrType = Array[1 .. n] Of Integer;

Procedure Bubble(Var ar: arrType; n: integer);
Var i, j, T: Integer;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If ar[Pred(j)] > ar[j] Then Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;


А если сделать:
type
TVector = array[1 .. size_col] of Integer;
TMatrix = array[1 .. size_row] of TVector;

Function F(Vec: TVector): Integer;
begin
{
Здесь находим сумму отрицательных четных элементов Vec (т.е. ряда матрицы),
и возвращаем ее как результат функции
}
end;

Procedure Bubble(Var ar: TMatrix; n: integer);
Var
i, j: Integer;
T: TVector;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If F(ar[Pred(j)]) > F(ar[j]) Then Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;

, то что получится, как ты думаешь?

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


Новичок
*

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

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


Идею понял, но решение чёто не получается :
const n=4; m=5;
type TVector = array[1 .. m] of Integer;
TMatrix = array[1 .. n] of TVector;
Function F(Vec: TVector): Integer;
var i:byte; s:integer;
begin
for i:=1 to m do
if (not odd(Vec[i])) and (Vec[i]<0) then inc(s,Vec[i]);
f:=s;
end;
Procedure Bubble(Var ar: TMatrix);
Var i, j: Integer;
T: TVector;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If F(ar[Pred(j)]) > F(ar[j]) Then Begin
T:= ar[Pred(j)]; ar[Pred(j)] := ar[j];
ar[j] := T
End
End;
var a,c:array[1..n,1..m] of integer; b:Tmatrix; i,j:byte;
begin
for i:=1 to n do
for j:=1 to m do
begin
writeln('vvedi el ',i,' i ',j,' ');
readln (A[i,j]);
end;
for i:=1 to n do
for j:=1 to m do
B[i][j]:=A[i,j];
bubble(b);
for i:=1 to n do
for j:=1 to m do
c[i,j]:=b[i][j];
for i:=1 to n do begin writeln;
for j:=1 to m do
Write(' ',c[i,j]); end;
readln
end.

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


Новичок
*

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

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


Задача помоему элементарная... Находим характеристику каждого ряда и по ним сортируем ряды, да хоть тем же пузырьком и всё тут. ТЫ всё правильно понял. Даже мудрить ничего не надо... Короче, если так нужен полный код - могу написать попозже... yes2.gif


--------------------
Time have not meaning. Mind - this is main...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Задача помоему элементарная...
А по-моему, написание COM-сервера - элементарная задача. А ты справишься?

Цитата
Короче, если так нужен полный код

То есть, код в посте №4 полным по твоему высокому мнению НЕ является?

DruiD,
извини, ты FAQ прочел? Матрицу ввести не можешь? Вывести не можешь? А это, между прочим, вот отсюда:
Массивы. Матрицы. Типичные задачи.

А теперь расскажи, ДЛЯ КОГО это все пишется, если тебе и таким как ты - каждый раз подавай ПОЛНЫЙ код? Допишешь сам, раз идею понял...

P.S. А переменные, кстати, обнулять перед использованием нужно...
 К началу страницы 
+ Ответить 

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

 





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