|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.01.2020, 19:38 | #1 |
Новичок
Джуниор
Регистрация: 21.01.2020
Сообщений: 6
|
Помогите решить в паскале
3. Составьте алгоритм и опишите его графическим способом Ввести массив из 10 чисел. Удалить из него все отрицательные элементы. Полученный новый массив вывести на экран.
|
22.01.2020, 19:45 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
В Pascal удалить элементы можно только из динамического массива, и то через одно место. А именно - сдвигать все правые элементы на один влево. Это если речь именно о массивах, так как есть еще динамические списки, вот там операцию удаления можно реализовать прямым способом.
E-Mail: arigato.freelance@gmail.com
|
24.01.2020, 13:58 | #3 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
можно на этапе ввода массив в цикле увеличивать переменную отрицательных чисел, дальше инициализировать новый массив размером исходный минус число отрицательных и записать в него все не отрицательные числа, а потом пересоздать исходный массив без отрицательных чисел :D
from dark to light)
|
24.01.2020, 23:40 | #4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
Это, опять же, прокатит только для динамического массива. Так как количество элементов статического массива не может изменяться (а удаление предполагает уменьшение числа элементов).
E-Mail: arigato.freelance@gmail.com
|
25.01.2020, 10:13 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Думаю, что это "как договоримся". Размер статического массива может быть рассчитан на максимально требуемое число элементов, а задействованной может быть часть, определяемая специально заведённым параметром N - число реальных элементов в массиве.
|
25.01.2020, 11:53 | #6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
Неэффективное использование памяти, плюс неэффективная процедура удаления элемента (сдвиг всех элементов, стоящих правее, на один влево). Все же лучше использовать динамические списки. Хотя условие задачи требует массив....
E-Mail: arigato.freelance@gmail.com
|
25.01.2020, 13:04 | #7 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
Динамический список вида
Код:
Код:
|
25.01.2020, 14:17 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
В таком варианте перезаписывается весь массив. А с динамическим списком действия выполняются лишь с отрицательными элементами.
По памяти да, динамическая структура тоже не очень оптимальна, так как надо хранить еще и указатели. А если копнуть глубже, то где-то ведь еще хранится и состояние памяти - занята она или свободна. E-Mail: arigato.freelance@gmail.com
|
25.01.2020, 20:57 | #9 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
Думаю, что для чисел длительности выполнения программы будут близки и для списка и массива.
А вот для каких-то больших типов данных (строки) - списки будут более быстрым вариантом. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите решить в паскале | Natyska2 | Помощь студентам | 0 | 02.06.2009 19:24 |
привет всем! помогите пожалуйста решить две задачи на паскале. я в паскале полный ноль. | Пищенок Саша | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 20.01.2009 13:46 |
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! | VisTBacK | Помощь студентам | 6 | 19.09.2008 13:44 |
Помогите решить на Паскале | 010 | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 13.04.2008 15:06 |