Удаление элемента из массива...

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Удаление элемента из массива...

Сообщение Winitar » 30.06.2009 (Вт) 16:20

Возможно ли удалить элемент из массива (в языке Turbo Pascal)? И если да то как? Просто сегодня экзамен был... С училкой жестко поругался :x

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Удаление элемента из массива...

Сообщение MIT » 30.06.2009 (Вт) 16:49

Именно удалить - нет. Можно переместить блок памяти назад и поменять размер массива.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Re: Удаление элемента из массива...

Сообщение Winitar » 30.06.2009 (Вт) 16:50

А можно поподробней? :idea:

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Удаление элемента из массива...

Сообщение MIT » 30.06.2009 (Вт) 17:01

Можно. Возьмем пример - у нас есть массив:

0 1 2 3 4 5 6 7 8 9 - индекс элемента
a s d e g h u k p b - данные

Что бы удалить "e" нам надо на место с индексом 3 записать данные из индекса 4, на место 4 - из 5ого, и т.д. - т.е. выполнить смещение данных влево. В итоге у нас получиться вот так:

0 1 2 3 4 5 6 7 8 9 - индекс элемента
a s d g h u k p b b

Синее - то что мы не трогали, зеленое - то, что переместили, красное - мусор.
Теперь меняем размер массива:

0 1 2 3 4 5 6 7 8 - индекс элемента
a s d g h u k p b

И получается что мы удалили элемент из середины.


З.Ы. На самом деле все несколько сложнее (по поводу работы с памятью), но смысл такой.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 30.06.2009 (Вт) 17:12

А ты что доказывал преподавателю? Что можно или что нельзя?
О каком массиве идет речь? О динамическом? Или статическом?

С [динамическим], извиняюсь со списком, все просто, можно удалить на самом деле, практически без геморроя, как известно в динамических массивах у элемента есть поле хранящее ссылку на следующий элемент, так вот элементу до удаляемого этому самому полю присваиваешь адрес следующего за удаляемым элемента, а удаляемый просто уничтожаешь. Хорош для больших массивов.

Со статическим я обычно делал так, способ не очень красивый но зато без бубна, выделял массив максимального размера размера, и заводил переменную хранящую длину массива которая реально используется, дальше удалить дело техники, если порядок не важен, меняешь последний с удаляемым и длину -1, если порядок важен, то делаешь тупо сдвиг элементов и длину-1. Хорошо для хранения небольшого массива.
Последний раз редактировалось Joo 02.07.2009 (Чт) 13:08, всего редактировалось 1 раз.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Re: Удаление элемента из массива...

Сообщение Winitar » 30.06.2009 (Вт) 17:24

Хмм.... Мудрено)) Ну у меня вопрос был - "Как удалить элемент массива?". Просто из массива. Я ей говорю, что нельзя!!! Она говорит - "Нет, можно! В вопросе же написано!"... Так и спорили...
Вообще преподаватель допустил множество ошибок в билетах. Например как вам такой вопрос (Задача) - "На окружности, с центром на заданных координатах x0, y0, есть дуга (начало дуги x1, y1, конец - x2, y2)... Внимание вопрос!!! Определите номера четвертой окружности, имееющие общие точки с дугой..... ". Честно говоря меня задачка озадачила... :? Написал какую то ересь... Только потоооом, выяснилось что там опечатка, и нужно вычислять номера не ЧЕТВЕРТОЙ ОКРУЖНОСТИ, а ЧЕТВЕРТЕЙ ОКРУЖНОСТИ.... Но времени перерешивать не было.... Короче я влетел. А ведь расчитывал на пятерку!

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 30.06.2009 (Вт) 18:06

Winitar писал(а):Хмм.... Мудрено)) Ну у меня вопрос был - "Как удалить элемент массива?". Просто из массива. Я ей говорю, что нельзя!!! Она говорит - "Нет, можно! В вопросе же написано!"... Так и спорили...
Вообще преподаватель допустил множество ошибок в билетах. Например как вам такой вопрос (Задача) - "На окружности, с центром на заданных координатах x0, y0, есть дуга (начало дуги x1, y1, конец - x2, y2)... Внимание вопрос!!! Определите номера четвертой окружности, имееющие общие точки с дугой..... ". Честно говоря меня задачка озадачила... :? Написал какую то ересь... Только потоооом, выяснилось что там опечатка, и нужно вычислять номера не ЧЕТВЕРТОЙ ОКРУЖНОСТИ, а ЧЕТВЕРТЕЙ ОКРУЖНОСТИ.... Но времени перерешивать не было.... Короче я влетел. А ведь расчитывал на пятерку!


Не дочитав твой пост, я уже понял, что речь идет о четвертях!
Извини конечно, но если ты говорил что нельзя элемент из массива удалить, то пятерку ты не заслужил точно.
Я думал ты доказывал, что можно удалить, а препод говорил что нет.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Re: Удаление элемента из массива...

Сообщение Winitar » 30.06.2009 (Вт) 18:09

Ну вот... я в меньшинстве... :(
У всех такое мнение?
Просто алгоритм удаления элемента слишком мудреный (не уверен что он описывается в учебниках), законичил я тока 2й курс.... то есть прошли только основы... хотя я уже не уверен что это что то значит :oops:
А на счет задачи сошибкой... Ну подобных задач я еще не решал (хотя смог бы с легкостью), поэтому не догадался о чем речь

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 30.06.2009 (Вт) 18:56

Winitar писал(а):Ну вот... я в меньшинстве... :(
У всех такое мнение?
Просто алгоритм удаления элемента слишком мудреный (не уверен что он описывается в учебниках), законичил я тока 2й курс.... то есть прошли только основы... хотя я уже не уверен что это что то значит :oops:
А на счет задачи сошибкой... Ну подобных задач я еще не решал (хотя смог бы с легкостью), поэтому не догадался о чем речь


Кроме того что вы прошли, нужно самому развиваться.
Главное чтобы было желание, если оно у тебя есть то ты сможешь многого добиться.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Удаление элемента из массива...

Сообщение SLIM » 30.06.2009 (Вт) 19:38

Joo писал(а):О каком массиве идет речь? О динамическом? Или статическом?

Вообще-то в Turbo Pascal-е нет динамических массивов.
Далее, советую почитать статью http://vbstreets.ru/VB/Articles/66160.aspx
В ней приведены основные алгоритмы, которые можно применить и в TP (ну не API конечно, но с памятью TP работает нормально и так)
Joo писал(а):С динамическим все просто, можно удалить на самом деле, практически без геморроя, как известно в динамических массивах у элемента есть поле хранящее ссылку на следующий элемент, так вот элементу до удаляемого этому самому полю присваиваешь адрес следующего за удаляемым элемента, а удаляемый просто уничтожаешь. Хорош для больших массивов.

Удаляемый просто уничтожаешь? И как же? :D


З.Ы. Использование динамичных массивов таки возможно, но с очень не хилым бубном и очень криво (через объекты,если не ошибаюсь)
Пишите жизнь на чистовик.....переписать не удастся.....

Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Re: Удаление элемента из массива...

Сообщение Winitar » 30.06.2009 (Вт) 19:40

SLIM писал(а):
Joo писал(а):О каком массиве идет речь? О динамическом? Или статическом?

Вообще-то в Turbo Pascal-е нет динамических массивов.
Далее, советую почитать статью http://vbstreets.ru/VB/Articles/66160.aspx
В ней приведены основные алгоритмы, которые можно применить и в TP (ну не API конечно, но с памятью TP работает нормально и так)
Joo писал(а):С динамическим все просто, можно удалить на самом деле, практически без геморроя, как известно в динамических массивах у элемента есть поле хранящее ссылку на следующий элемент, так вот элементу до удаляемого этому самому полю присваиваешь адрес следующего за удаляемым элемента, а удаляемый просто уничтожаешь. Хорош для больших массивов.

Удаляемый просто уничтожаешь? И как же? :D


З.Ы. Использование динамичных массивов таки возможно, но с очень не хилым бубном и очень криво (через объекты,если не ошибаюсь)

Ха! Значит я все таки был прав?

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Удаление элемента из массива...

Сообщение SLIM » 30.06.2009 (Вт) 20:11

Winitar писал(а):Ха! Значит я все таки был прав?

Я тебе этого не говорил.
Удалит элемент можно и возможно. Я же не знаю на каком уровне у вас проходила дисциплина. Может вы там работаете на очень низком уровне.
Но факт то, что динамических массивов нет, поэтому простым (для того чтобы не париться по пустякам) способом с не прокатит.
Но есть куча вариантов. Все они как-то кривые (варианты с переносом элементов в другой, варианты с передвижением элементов влево, варианты работы с массивом на уровне памяти и т.д.)
Пишите жизнь на чистовик.....переписать не удастся.....

Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Re: Удаление элемента из массива...

Сообщение Winitar » 30.06.2009 (Вт) 20:15

SLIM писал(а):
Winitar писал(а):Ха! Значит я все таки был прав?

...Но есть куча вариантов. Все они как-то кривые (варианты с переносом элементов в другой, варианты с передвижением элементов влево, варианты работы с массивом на уровне памяти и т.д.)

Во - во... дали билет, выкручивайся как хочешь.... так что ли? Конкретной темы ты не было!!!

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 30.06.2009 (Вт) 20:32

SLIM писал(а):
Joo писал(а):О каком массиве идет речь? О динамическом? Или статическом?

Вообще-то в Turbo Pascal-е нет динамических массивов.

А про организацию динамических массивов в паскале с применением указателей слышал?

SLIM писал(а):
Joo писал(а):Далее, советую почитать статью http://vbstreets.ru/VB/Articles/66160.aspx
В ней приведены основные алгоритмы, которые можно применить и в TP (ну не API конечно, но с памятью TP работает нормально и так)

Сам туда иди, я не претендовал на лучший алгоритм, я описал простейший механизм, который замечательно работает на небольших массивах и доступен для понимания даже школьнику. MIT тоже кстати описал подобные манипуляции со сдвигом ))

SLIM писал(а):
Joo писал(а):С динамическим все просто, можно удалить на самом деле, практически без геморроя, как известно в динамических массивах у элемента есть поле хранящее ссылку на следующий элемент, так вот элементу до удаляемого этому самому полю присваиваешь адрес следующего за удаляемым элемента, а удаляемый просто уничтожаешь. Хорош для больших массивов.

Удаляемый просто уничтожаешь? И как же? :D

Все руками, все руками.

SLIM писал(а):З.Ы. Использование динамичных массивов таки возможно, но с очень не хилым бубном и очень криво (через объекты,если не ошибаюсь)

Без бубна, просто прямыми руками.

Winitar писал(а):Ха! Значит я все таки был прав?

Ты был не прав!

з.ы. У меня была курсовая по алгоритмизации, где без динамического массива не обойтись. Домой приду выложу. Там все просто, и без всякого бубна!
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Удаление элемента из массива...

Сообщение SLIM » 30.06.2009 (Вт) 21:27

Joo писал(а):А про организацию динамических массивов в паскале с применением указателей слышал?

Еще раз, в Turbo Pascal -е нет динамических массивов. Еще раз повторить? Причем тут организация?
Joo писал(а):Без бубна, просто прямыми руками.

Ну ждемс.
Пишите жизнь на чистовик.....переписать не удастся.....

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 30.06.2009 (Вт) 22:19

SLIM писал(а):
Joo писал(а):А про организацию динамических массивов в паскале с применением указателей слышал?

Еще раз, в Turbo Pascal -е нет динамических массивов. Еще раз повторить? Причем тут организация?
Joo писал(а):Без бубна, просто прямыми руками.

Ну ждемс.


Ты зацепился за то, что в ПАСКАЛЕ нет динамических массивов, для криворуких их нет, согласен.

В паскале можно создать список из динамически создаваемых объектов, которые в себе хранят ссылку на следующий объект, при верном подходе к произвольному объекту можно обратиться не только перебором но и по индексу, а это не что иное как массив.

Если в паскале нет ключевых слов и операторов для создания и управления динамическими массивами, это не значит что в паскале это невозможно!
Возможно! И довольно просто.[removed]

Завтра, а точнее уже сегодня, когда приду домой скину свой курсовик, там демонстрируется данный механизм.

К стати, Google знает довольно немало про динамические массивы в паскале ))
Последний раз редактировалось Joo 01.07.2009 (Ср) 4:36, всего редактировалось 1 раз.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Удаление элемента из массива...

Сообщение SLIM » 30.06.2009 (Вт) 22:41

Joo писал(а):Ты зацепился за то, что в ПАСКАЛЕ нет динамических массивов, для криворуких их нет, согласен.

В паскале можно создать список из динамически создаваемых объектов, которые в себе хранят ссылку на следующий объект, при верном подходе к произвольному объекту можно обратиться не только перебором но и по индексу, а это не что иное как массив.

Если в паскале нет ключевых слов и операторов для создания и управления динамическими массивами, это не значит что в паскале это невозможно!
Возможно! И довольно просто. Если для тебя это сверхсложная задача, то о чем мы с тобой вообще можем спорить?


Type что ли?

Но это изначально не массив вообще.
Изначально в TP нет динамических массивов. Я не говорил что не возможно что-то замутить - можно, но не касаясь понятия массивов в рамках TP
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Удаление элемента из массива...

Сообщение iGrok » 30.06.2009 (Вт) 23:57

Winitar писал(а):...законичил я тока 2й курс...

То есть это ты уже в универе такие вопросы задаёшь и споришь с преподом, а не в школе? Сильно...

По теме - конечно можно. Если не мудрить с алгоритмами и работой с памятью, то циклом перебираются все элементы начиная с удаляемого и до конца массива, и перемещаются по одному к началу (x(i-1)=x(i)), после чего последний элемент обнуляется.

2All: Ребят, вы явно пытаетесь предложить способ "на уровень выше". Таких вещей может не знать даже его "училка". Наш препод по си в универе, к примеру, не знал.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Удаление элемента из массива...

Сообщение Хакер » 01.07.2009 (Ср) 0:12

В паскале можно создать список из динамически создаваемых объектов, которые в себе хранят ссылку на следующий объект, при верном подходе к произвольному объекту можно обратиться не только перебором но и по индексу, а это не что иное как массив.

Поведуешь нам, как, имея начало цепочки, по индексу сразу же (то есть не перебирая элементы цепочки) получить адрес соответствующего элемента?

Если для тебя это сверхсложная задача, то о чем мы с тобой вообще можем спорить?

Спорить с ним ты можешь о том, есть ли в TP динамические массивы (а не возможность их организации другими фичами языка). И если действительно нет ключевых слов и операторов для создания и управления, то SLIM в этом споре прав. Но очень советую тебе воздержать от подобных нападок. Ведь не первый уже раз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 01.07.2009 (Ср) 4:35

Хакер писал(а):
В паскале можно создать список из динамически создаваемых объектов, которые в себе хранят ссылку на следующий объект, при верном подходе к произвольному объекту можно обратиться не только перебором но и по индексу, а это не что иное как массив.

Поведуешь нам, как, имея начало цепочки, по индексу сразу же (то есть не перебирая элементы цепочки) получить адрес соответствующего элемента?

Да, сейчас уже пойду до дому, и выложу.

Хакер писал(а):
Если для тебя это сверхсложная задача, то о чем мы с тобой вообще можем спорить?

Спорить с ним ты можешь о том, есть ли в TP динамические массивы (а не возможность их организации другими фичами языка). И если действительно нет ключевых слов и операторов для создания и управления, то SLIM в этом споре прав. Но очень советую тебе воздержать от подобных нападок. Ведь не первый уже раз.
[/quote]

Да воздержусь, просто иногда раздражает, ну да ладно...
По умолчанию их нет, но организация возможна, и с этим не поспоришь!
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Удаление элемента из массива...

Сообщение iGrok » 01.07.2009 (Ср) 13:39

Joo писал(а):По умолчанию их нет, но организация возможна, и с этим не поспоришь!

Нет, не поспоришь. И тем не менее, если "в языке нет динамических массивов", значит их нет. А всё остальное - от лукавого.
Просто об этом, как обычно получается, вполне может не знать препод. И что он сделает со студеном после демонстрации такого способа одному декану известно.. )
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Удаление элемента из массива...

Сообщение SLIM » 01.07.2009 (Ср) 20:43

Joo
Ты наверное не верно меня понимаешь. В TP нет динамических массивов. Стоит тебе это признать. А потом сделать то, к чему мы здесь, на форуме собственно и собрались - написать возможные варианты организации подобия динамических массивов. И автору будет полезно, и допустим мне интересно, и ты свою точку зрения отстоял в какой-то мере. А то начинаешь спорить, раздражаться, и других раздражать.

Мы ждем твоего примера - как минимум два человека - я и автор.

З.Ы. Мы здесь собрались чтобы говорить о чем-то, помогать и искать помощи. Не забывай об этом
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Удаление элемента из массива...

Сообщение Хакер » 01.07.2009 (Ср) 20:52

А мне не интересно, как он реализует дин. массивы.

Мне интересно другое: чел заикнулся о связанных списках как об альтернативе дин. массивов.
Разница между массивами (в том числе и динамическими) и списками существенная: элемента массива располагаются в памяти строго друг за другом, в то время как элементы списка располагаются как попало и где угодно.

Вычислить адрес элемента массива имея адрес 0-го элемента и индекс легко: нужно к адресу 0-го элемента прибавить индекс умноженный на размер элемента.

Со списками способа узнать адрес n-ного элемента арифметически (без итеративного перебора всех элементов от 0-го до (n-1)го) не существует. По крайней мере я не знаю такого способа.

Но чел сказал, что существует некая «правильная организация», при которой можно вычислить адрес произвольного нужного элемента списка не пробегаясь по всему списку от первого элемента до нужного, а арифметически (а как ещё?).

Меня жутко интересует этот способ. Вернее не сам способ, а то, что он существует в природе.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Winitar
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 06.07.2006 (Чт) 20:45
Откуда: Астана

Re: Удаление элемента из массива...

Сообщение Winitar » 01.07.2009 (Ср) 21:31

iGrok писал(а):
Winitar писал(а):...законичил я тока 2й курс...

То есть это ты уже в универе такие вопросы задаёшь и споришь с преподом, а не в школе? Сильно...
.....

Не в уневере, а в колледже..... После 9го класса :roll:

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 02.07.2009 (Чт) 12:31

SLIM писал(а):Joo
...
Мы ждем твоего примера - как минимум два человека - я и автор.
З.Ы. Мы здесь собрались чтобы говорить о чем-то, помогать и искать помощи. Не забывай об этом

Смотри ниже.

Хакер писал(а):Мне интересно другое: чел заикнулся о связанных списках как об альтернативе дин. массивов.Разница между массивами (в том числе и динамическими) и списками существенная: элемента массива располагаются в памяти строго друг за другом, в то время как элементы списка располагаются как попало и где угодно.

Признаю, тут я был не прав, все таки я организовывал не через списки динамический массив. За давностью происходящего подзабыл, со списком такое не пройдет.

Динамический массив, не список таки, но все равно просто и без бубна.
Свой курсач не нашел, ваял по памяти в браузере, редактора тоже нет.
Код: Выделить всё
type
tT= Integer; //Какого типа будет массив
tP = ^T;

var
Ptc,Ptm :tP; 
n, index :integer;
begin
n := 10; //Размер массива

Ptm:=nil;
GetMem(Ptm, N * SizeOf(tT)); //Выделяем паямть
Ptc:=Ptm;

index:=5; //Запишем в 5 элемент массива что-нить

If(index in [0..n])then begin
  If index<0 then dec(Ptc, -index) else inc(Ptc, index); //Двигаем указатель
  Ptc^:=5; //Записываем данные
end;

If Ptm<>nil then FreeMem(Ptm, n * SizeOf(tT)); //Освобождаем память
end.

Если есть вопросы пишите. Если не компиляется, напишите, скачаю TP исправлю.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Удаление элемента из массива...

Сообщение alibek » 02.07.2009 (Чт) 12:48

Joo, перечитай еще раз свое первоначальное сообщение. В котором ты говорил, что изменяешь указатель на следующий элемент массива.
Твой код делает то, что во втором сообщении описал MIT.
Lasciate ogni speranza, voi ch'entrate.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Удаление элемента из массива...

Сообщение Joo » 02.07.2009 (Чт) 13:04

alibek писал(а):Joo, перечитай еще раз свое первоначальное сообщение. В котором ты говорил, что изменяешь указатель на следующий элемент массива.
Твой код делает то, что во втором сообщении описал MIT.


Ты прочитай мой последний пост пожалуйста. После цитаты Хакера.

Я в своем посте описал работу со списками, я был не прав. Но я был прав что реализация возможна и довольно простая.

Самое интересное в этой теме, что я ни разу не сказал что в Turbo Pascal есть динамические массивы, я лишь говорил что возможна их организация. Конечно я ошибся, в самом первом своем посте, выдав работу со списком за работу с массивом, но на это не кто кроме Хакера не обратил внимания, я признал ошибку. Но на протяжении всей темы, меня пытались переубедить, хотя я и не утверждал обратного, что в паскале нет динамических массивов.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 71

    TopList