Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Сжать массив


Автор: Torres 21.6.2010, 19:14
Подскажите плиз, как сжать двумерный массив, удалив из него все элементы, модуль которых находится в интервале [a,b], а все освободившиеся в конце элементы заполнить нулями.

Автор: bems 22.6.2010, 04:31
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Torres 23.6.2010, 19:38
люди, помогите, для одномерного массива всё нормально, но для двумерного никак не получается

Автор: LexuSS 23.6.2010, 22:54
а простым перебором не пробовал?

Автор: Torres 28.6.2010, 00:30
помогите, вот верчусь, никак не получается
Код

//сжатие массива
procedure TForm1.RadioButton3Click(Sender: TObject);
var
 i,j,a,b,m,n,x,y:integer;
begin
a:=StrToInt(Edit3.Text);
b:=StrToInt(Edit4.Text);
m:=StringGrid1.RowCount-1;//кол-во строк
n:=StringGrid1.ColCount-1;//кол-во столбцов
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    if (a<=abs(massiv[i,j])) and (abs(massiv[i,j])<=b) then
     begin
      for x:=i to m do
       begin
        for y:=j to n do
         begin
          if y<n then
            begin
              StringGrid1.Cells[y,x]:=StringGrid1.Cells[y+1,x];
              massiv[x,y]:=StrToInt(StringGrid1.Cells[y,x]);
              StringGrid1.Cells[n,m]:=IntToStr(0);
              massiv[m,n]:=StrToInt(StringGrid1.Cells[n,m]);
            end
          else
            begin
              StringGrid1.Cells[y,x]:=StringGrid1.Cells[1,x+1];
              massiv[x,y]:=StrToInt(StringGrid1.Cells[y,x]);
              StringGrid1.Cells[n,m]:=IntToStr(0);
              massiv[m,n]:=StrToInt(StringGrid1.Cells[n,m]);
            end;
         end;
       end;      
     end;
   end;
 end;
end;

Автор: Sanaff 29.6.2010, 14:32
двумерный массив сжимать - нарушится порядок строк и столбцов для элементов. Можно конечно сдвигать элементы на свободные места, но результат будет неоднозначный (как написан алгоритм, такой масссив и получится).
в коде достаточно 3  цикла. (2 на поиск, 1 на сдвиг строки или столбца)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)