|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.11.2017, 03:35 | #1 |
Пользователь
Регистрация: 29.11.2017
Сообщений: 63
|
Удалить из массива минимальный элемент. - Pascal
Условие-
Заданный массив с n чисел, в котором все элементы разные. Удалить из массива минимальный элемент. Удалить элемент массива означает: изъять этот элемент из массива смещением всех элементов, следующие за ним, на одну позицию влево, и присвоить последнему элементу массива значение 0. Написал так-(сказали что не правильно) Код:
Последний раз редактировалось dastreba; 29.11.2017 в 03:45. |
29.11.2017, 07:45 | #2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Не нужно использовать Random без предварительной инициализации генератора:
Код:
А ответ дан прямо в задании: "Заданный массив с n чисел, в котором все элементы разные." Соответственно, рандом(10) тут уже не подходит, нужно как минимум брать n. Ещё вот тут проще сделать цикл до n - 1 вместо декремента размера массива, а A[n] отдельно присваивать значение 0 (по заданию должно быть так - "присвоить последнему элементу массива значение 0"): Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 29.11.2017 в 07:50. |
29.11.2017, 07:57 | #3 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Ну и вообще - можно использовать функции. Как-нибудь так:
Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
29.11.2017, 08:49 | #4 | |
Пользователь
Регистрация: 29.11.2017
Сообщений: 63
|
Цитата:
Прост это слишком сложно понять,я такое еще не проходил |
|
29.11.2017, 09:53 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
здесь, разумеется должен быть for
это Вы не делаете. (хотя, я не вижу смысла в этом присваивании) randomize в начале не помешает, даже если у Вас Pascal ABC или Pascal ABC.NET (хотя там он и не нужен). а в остальном всё работает: https://ideone.com/mHsGVQ Код:
|
29.11.2017, 10:02 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Так, на всяк случай)) Перемещать элементы массива к началу можно и без цикла процедурой move
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
29.11.2017, 11:13 | #7 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Смысл есть: после сдвига в конце массива будет два одинаковых значения, если не занулять последний элемент. Соответственно, это уже не будет первоначальным массивом, сдвинутым на 1 позицию влево
Цитата:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 29.11.2017 в 11:19. |
|
29.11.2017, 11:17 | #8 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Цитата:
Ну для того, чтобы было проще, берите свою вполне работающую программу и допиливайте её с учётом всех перечисленных замечаний. Кратко по замечаниям: 1) Использовать Randomize 2) Сделать заполнение массива уникальными значениями 3) Присваивать последнему элементу значение 0 после сдвига 4) Опционально - использовать процедуру move, про которую упоминал Аватар
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|
29.11.2017, 11:49 | #9 | |
Пользователь
Регистрация: 29.11.2017
Сообщений: 63
|
Цитата:
|
|
29.11.2017, 13:46 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
будет два нулевых. И что? чем это лучше, чем два одинаковых ненулевых? во-вторых, в массиве на 100 элементов мы заполняем первые n - остальные нас не интересуют. После уменьшения размера массива на единицу, нас уже не будет интересовать, какие там элементы, ПОСЛЕ n в-третьих, в условии сказано про разные элементы массива только для того, чтобы не возникал вопрос - какой из минимальных элементов удалять - первый, последний или вообще все. Очевидно, что в массиве из разных элементов минимальный только один. Вот его и надо удалить. и, к слову, ничего не сказано, как массив заполнен. вполне можно и так: for i:=1 to n do A[i] := i; |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Записать элементы массива X, удовлетворяющие условию Х[12], подряд в массив Y =. Определить минимальный элемент массива X. | полин@ | Общие вопросы C/C++ | 0 | 03.10.2016 14:37 |
Вычислить минимальный элемент массива(вернусь ссылку на него ), заменить этой суммой минимальный элемент | mari_ly | Общие вопросы C/C++ | 1 | 30.03.2016 16:31 |
'ПАСКАЛЬ'Удалить столбец, в котором находится минимальный элемент. | Ver kat | Помощь студентам | 8 | 28.09.2012 06:56 |
Минимальный элемент массива | Артемкка | Помощь студентам | 3 | 19.12.2011 01:18 |