Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический массив. Правильный порядок 
:(
    Опции темы
Beren
Дата 28.3.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 28.3.2011

Репутация: нет
Всего: нет



Вот в чём суть. Мне надо исправить в этом коде процедуру Re-перестановки элементов по индексу. И не получется сделать, чтобы процедура Del удаляла элемент исходного массива , а не после вставки элемента (. Благодарю за помощь
Код
implementation
type
Areal=array of integer;
var a:Areal ;

{$R *.dfm}

procedure CreateMas(var Aq:Areal;N:integer );
var I:Integer;

begin
SetLength(Aq,N);
for I:=0 to N-1 do
begin
Aq[i]:=i+1;
end;
end;
procedure ShowMas(var Aw:Areal;Memo:TMemo);
var N:Integer;
I:Integer;
Begin
N := Length(Aw);
for I:=0 to N-1 do
begin
Memo.Lines.Add(IntToStr(Aw[i]));
end;
End;
procedure Ainsert (var Ar:Areal;R:integer; Ind:integer);
var
N:Integer;
I:Integer;

begin
N:=Length(Ar);
SetLength(Ar, N+1);
for i:=N-1 downto Ind do
Ar[i+1]:=Ar[i];
Ar[ind]:=R;
end;
procedure Del(var Ae:Areal; x:integer);
var N:Integer;
I:Integer;
begin
N:=Length(Ae);
for i:=x to N-1 do
Ae[i-1]:= Ae[i];
SetLength(Ae, N-1);
end;
procedure Re( var Ay:Areal; v:integer; h:integer);
var N:Integer;
I:Integer;
tmp:integer;
begin
N := Length(Ay);
for I:=0 to N-1 do

tmp:=A[v];
A[v]:=A[h];
A[h]:=tmp;
SetLength(Ay, N);

end;
procedure TForm1.Button1Click(Sender: TObject);
var
N:integer;
begin
N:=StrToInt(Edit1.Text);
CreateMas(A,N);
Memo1.Clear();
ShowMas(A,Memo1);
Ainsert(A,StrToInt(Edit2.Text),StrToInt(Edit3.Text)-1);
Memo2.Clear();
ShowMas(A,Memo2);
Del(A,StrToInt(Edit4.Text));
Memo3.Clear ;
ShowMas(A,Memo3);
Re(A, StrToInt(Edit5.Text),StrToInt(Edit6.Text)-1);
ShowMas(A,Memo4);


end;

end.

PM MAIL   Вверх
MetalFan
Дата 28.3.2011, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Beren @  28.3.2011,  13:22 Найти цитируемый пост)
И не получется сделать, чтобы процедура Del удаляла элемент исходного массива , а не после вставки элемента (

а теперь еще раз и по-русски...

А Del должно выглядеть так:
Код

procedure Del(var Ae:Areal; x:integer);
var
  N:Integer;
  I:Integer;
begin
  N:=Length(Ae);
  for i:=succ(x) to N-1 do
    Ae[i-1]:= Ae[i];
  SetLength(Ae, N-1);
end;


Это сообщение отредактировал(а) MetalFan - 28.3.2011, 17:23


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Beren
Дата 28.3.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 28.3.2011

Репутация: нет
Всего: нет



Что тут непонятного ?!.  Ainsert  вставляет элемент в массив. А мне надо, чтобы Del удаляла не после вставки элемента в массив, а тот который создаётся. Или еще проще в Memo1 исходный массив, в Memo2 после вставки элемент в массив, который в Memo1. И мне надо,чтобы в Memo3 был массив, который в Memo1, но после удаления элемента. А сейчас в Memo3 массив, который в Memo2 после удаления элемента. Доступно излагаю ?
PM MAIL   Вверх
MetalFan
Дата 29.3.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Beren, да все понятно. копаться в твоем жудко отформатированном коде нет никакого желания.
Попробовал бы хоть внести мою правку в Del для начала...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
0x0027
Дата 1.4.2011, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.1.2010

Репутация: нет
Всего: -1



MetalFan, цикл? Может лучше move?)
PM MAIL   Вверх
MetalFan
Дата 1.4.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



0x0027, несомненно лучше.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0682 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.