![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
![]()
Динамические массивы нумеруються с 0. И как мне кажеться логичнее здесь нумеровать элементы от 0 тоже. Но это вопрос исключительно договорённости.
Но если нужно именно чтобы индекс интерпретировался от 1 то напишите Код:
либо можно в процедуре интерпретировать индекс от нуля а в графическом интерфейсе от 1. тогда процедуру Ainsert не меняйте. А напишите в коде обработке нажатия на кнопку Код:
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." Последний раз редактировалось val_nnm; 24.03.2011 в 15:59. |
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 50
|
![]()
Спасибо большое
|
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 50
|
![]()
А теперь я хочу удалить элемент по индексу. Мне хотелось бы сделать его самим ). Я хочу, чтобы Вы меня направили в нужном направлении. То есть надо создать Memo3. В нём будет массив CreateMas после удаления элемента. Намекните, пожалуйста, что нужно поменять в коде
## procedure Del(var A:Areal; x:integer); var N:Integer; I:Integer; begin N:=Length(A); SetLength(A, N-1); for i:=0 to N-1 do Finalize (A[x]); end; |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
![]()
Ну начнём. Для удаления элемента нужно свинуть все элементы которые находяться после удаляемого элемента на 1 позицию назад. Чтобы они закрыли удаляемый элемент собой. (Т.к. функция SetLength добавляет или удаляет элементы только в конце массива. ) И затем изменить Размер результирующего массива на 1.
Здесь N:=Length(A); вы делаете правильно. Строку SetLength(A, N-1); переместите в самый конец. А вот сдвиуть элементы нужно следующим образом. A[X] := A[X+1]; A[X+1] := A[X+2]; A[X+2] := A[X+3]; ... A[N-1] := A[N]; для этого нужен цикл. Есть несколько вариантов как именно организавать такой цикл. Всё они в общем одинаковые. Ну например сделайте цикл от X до N-1. (можно сделать и от X+1 до N но это уже дело вкуса). Ну и в цикле в зависимости от выбранного вами варианта напишите соответсвующее уравнение для переноса значение из одной ячейки массива в другую. В общем это в словах чтобы вы сами разобрались. Если у вас не получиться. Я тогда напишу вам готовый код.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." |
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 50
|
![]()
Чего-то не хватает ... (
procedure Del(var A:Areal; x:integer); var N:Integer; I:Integer; begin N:=Length(A); for x:=1 to N-1 do A[i-1]:= A[i]; SetLength(A, N-1); |
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 50
|
![]()
Немного подумав
begin N:=Length(A); for i:=x to N-1 do A[i-1]:= A[i]; SetLength(A, N-1); end; |
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
![]()
Меленькое уточнение.
Если мы индекс считаем с 1 тогда вы совершенно правильно написали Код:
Код:
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." |
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 50
|
![]()
Спасибо огромное
|
![]() |
![]() |
![]() |
#19 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 50
|
![]()
А как сделать, чтобы процедура Del удаляла элемент исходного массива , а не после вставки элемента. В такой последовательности так происходит
Код # 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),StrT oInt(Edit3.Text)-1); Memo2.Clear(); ShowMas(A,Memo2); Del(A,StrToInt(Edit4.Text)); Memo3.Clear ; ShowMas(A,Memo3); end; |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамический массив - или всё таки не динамический? | vedro-compota | Общие вопросы C/C++ | 30 | 10.12.2010 23:22 |
динамический стек. удаление элемента | alex(21) | Помощь студентам | 2 | 01.11.2010 20:22 |
Процедура нахождения мах элемента. | Другая | Помощь студентам | 5 | 11.05.2010 20:03 |
Динамический массив | Zhanna5006 | Помощь студентам | 7 | 10.01.2010 14:09 |