Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Необходимо удалить элемент из двумерного массива


Автор: anastasiy 17.12.2012, 11:20
Необходимо создать процедуру удаления заданного элемента (замена его -1) из двумерного массива.

Помогите исправить ошибки

Код

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,n,m,key,x,y,k:integer;
per:boolean;
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
key:=strtoint(edit3.text);
i:=1;
j:=1;
k:=-1;
per:=false;
  for x := 1 to n do
    begin
    for y := 1 to m do
    begin
   while ((arr[i,j]<>key) and (i<=n) and (j<=m)) do
   begin
      j:=j+1;
   end;
      if arr[i,j]=key   then
  begin
          arr[i,j]:=k
  end;
  j:=1;
 i:=i+1;
   end;
   end;
   if (arr[i,j]=key ) then
  begin
       arr[i,j]:=k
  end
 else
 if (per=false) then
 begin
 ShowMessage(' Элемент не найден');
 end;
end;
end.


Автор: Poseidon 17.12.2012, 13:47
Цитата(anastasiy @  17.12.2012,  11:20 Найти цитируемый пост)
удаления заданного элемента (замена его -1)
Удаление и замена - это разные вещи. Но в любом случае необходимо знать оба индекса элемента. Зная их, какие могут возникнуть трудности с заменой?
Код

arr[x,y]:= -1


С удаление немного сложнее и есть некоторые нюансы. Опиши подробнее (желательно с примерами) что имено тебе требуется.

Признаюсь честно, код не смотрел, т.к. я такое читать не умею.

Автор: anastasiy 17.12.2012, 15:05
Цитата(Poseidon @ 17.12.2012,  13:47)
Цитата(anastasiy @  17.12.2012,  11:20 Найти цитируемый пост)
удаления заданного элемента (замена его -1)
Удаление и замена - это разные вещи. Но в любом случае необходимо знать оба индекса элемента. Зная их, какие могут возникнуть трудности с заменой?
Код

arr[x,y]:= -1


С удаление немного сложнее и есть некоторые нюансы. Опиши подробнее (желательно с примерами) что имено тебе требуется.

Признаюсь честно, код не смотрел, т.к. я такое читать не умею.

Мне нужно заменить найденный элемент на -1

Автор: Poseidon 17.12.2012, 16:43
Цитата(anastasiy @  17.12.2012,  15:05 Найти цитируемый пост)
Мне нужно заменить найденный элемент на -1
ОК. Как заменить я тебе написал выше. Знаешь ди ты индексы элемента? Если нет, то что ты знаешь что бы их найти?

Автор: anastasiy 17.12.2012, 16:47
Цитата(Poseidon @ 17.12.2012,  16:43)
Цитата(anastasiy @  17.12.2012,  15:05 Найти цитируемый пост)
Мне нужно заменить найденный элемент на -1
ОК. Как заменить я тебе написал выше. Знаешь ди ты индексы элемента? Если нет, то что ты знаешь что бы их найти?

у меня есть код, мне нужно его исправить, так он не работает
Код

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,n,m,key,x,y,k:integer;
per:boolean;
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
key:=strtoint(edit3.text);
i:=1;
j:=1;
k:=-1;
per:=false;
  for x := 1 to n do
    begin
    for y := 1 to m do
    begin
   while ((arr[i,j]<>key) and (i<=n) and (j<=m)) do
   begin
      j:=j+1;
   end;
      if arr[i,j]=key   then
  begin
          arr[i,j]:=k
  end;
  j:=1;
 i:=i+1;
   end;
   end;
   if (arr[i,j]=key ) then
  begin
       arr[i,j]:=k
  end
 else
 if (per=false) then
 begin
 ShowMessage(' Элемент не найден');
 end;
end;
end.


Автор: boobie 22.12.2012, 12:31
Епты. У тебя уже есть готовый двумерный массив, и ты вводишь в edit1 - i, а в edit2 - j столбец и строку, и меняешь значение этого элемента массива на -1? Так? Что у тебя в edit3? Что ты хочешь добится от этого кода? Задачу нормально опиши, а то нихрена не понятно... 

Кстати, а почему в Delphi в индексе идет сначала столбец, а потом строка? Т.е. mas[i,j], где i-столбец, а j-строка... В Паскале не так, вроде, было... Да и в С++ - не так.

Автор: bems 22.12.2012, 16:37
И в Дельфи и в Паскале и в С/С++ первый индекс двумерного массива означает индекс одномерного массива в двумерном, а второй - индекс элемента в этом одномерном массиве. А такие вещи как "строки" и "столбцы" довольно эфемерны, и зависят от того, каким способом индексы используются при выводе на экран.

Автор: northener 23.12.2012, 01:19
Цитата(bems @  22.12.2012,  16:37 Найти цитируемый пост)
И в Дельфи и в Паскале и в С/С++ первый индекс двумерного массива означает индекс одномерного массива в двумерном, а второй - индекс элемента в этом одномерном массиве. А такие вещи как "строки" и "столбцы" довольно эфемерны, и зависят от того, каким способом индексы используются при выводе на экран. 

Или при записи в файл, откуда они потом считываются. А в файле (текстовом) как раз существуют строки и столбцы. 
А автор пока так и не сказал как и откуда он берет/получает массив arr!

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