1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
В общем дан двумерный массив N^N. Нужно высчитать суммы средних квадратов массива т.е. подмассивов NxN. И вот мне нужно после вычисления суммы удалить данный подмассив. Как это можно выполнить?
♣♣♣ "Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣
А если делать так, как ты описал, то подмассивы будут следовать один за другим, то есть элементы первого будут иметь номера 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.
Это уже что-то совсем новенькое, то тебе надо удалять, теперь - записывать... Ты уж определись...