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

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

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

> Удаление элементов двумерного массива
Cheburashka
сообщение 7.06.2009 14:50
Сообщение #1


Бывалый
***

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

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


В общем дан двумерный массив N^N.
Нужно высчитать суммы средних квадратов массива т.е. подмассивов NxN.
И вот мне нужно после вычисления суммы удалить данный подмассив. Как это можно выполнить?
Пример:
1 2 3 4
4 3 2 1
9 8 7 6
6 7 8 9
Первый шаг: Подсчитали сумму. Удалили:
. . 3 4
. . 2 1
9 8 7 6
6 7 8 9
Второй шаг: Подсчитали сумму. Удалили:
. . . .
. . . .
9 8 7 6
6 7 8 9


Точками являются удалённые элементы

Сообщение отредактировано: Сергей Меркурьев - 7.06.2009 14:52


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 8.06.2009 12:38
Сообщение #2


Гость






Цитата
А если делать так, как ты описал, то подмассивы будут следовать один за другим, то есть элементы первого будут иметь номера 1, 2, 3, 4
это зависит от того, как заполнять матрицу данными... Смотри:
const
n = 2;
type
box = array[1 .. n, 1 .. n] of integer;
matrix = array[1 .. 2, 1 .. 2] of box;

procedure print_box(const b: box);
var i, j: integer;
begin
for i := 1 to n do begin
for j := 1 to n do write(b[i, j]:4);
writeln;
end;
end;
procedure print_mx(const mx: matrix);
var i, j, ib, jb: integer;
begin
for ib := 1 to 2 do
for i := 1 to n do begin
for jb := 1 to 2 do
for j := 1 to n do write(mx[ib, jb][i, j]:4);
writeln;
end;
writeln;
end;
var
mx: matrix;
i, j, ib, jb: integer;
curr: integer;
begin
curr := 0;
for ib := 1 to 2 do
for i := 1 to n do
for jb := 1 to 2 do
for j := 1 to n do begin
mx[ib, jb][i, j] := curr; inc(curr)
end;

writeln('matrix');
print_mx(mx);

for ib := 1 to 2 do
for jb := 1 to 2 do begin
writeln('box[', ib:2, ',', jb:2, ']:');
print_box(mx[ib, jb]);
end;
end.
По-моему, как раз так как нужно заполняется матрица, так, как ее удобнее обрабатывать, а не заполнять... Если стоит задача имеющиеся где-то в файле или получаемые "на лету" данные обработать так, как сказано в первом посте, то есть, квадратными блоками, то как там и что будет использоваться для промежуточного хранения информации - это вообще неважно... Если матрица, описанная как Array[1 .. n, 1 .. n] of integer уже есть, то даже тогда может оказаться выгоднее переформировать данные, как я показал, и очень быстро пробежаться по ним и обработать, не высчитывая каждый раз каких-то индексов, смещений и т.п.

На кой тогда программист вообще нужен, если ничего из средств языка не задействовано? Зачем вообще учить структуры данных, давайте обрабатывать все линейными массивами, и больше ничего не использовать...
В общем, дело ваше, я предложил работающее решение, а воспользоваться им или (как обычно) все переделать по-своему, еще и высказав, что "это неправильно, надо делать по-другому" - дело ваше... Мне как-то плевать на все эти догмы, я использую то, что подходит для решения задачи, а не то, что ПРИНЯТО для этого использовать...

Цитата
мне нужно ту часть в которой я буду именно каждый раз записывать новый подмассив NxN из массива N^N.
Это уже что-то совсем новенькое, то тебе надо удалять, теперь - записывать... Ты уж определись...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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