Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87

Удаление последнего элемента из массива

21.08.2016, 11:54. Показов 2810. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть массив, он объявлен в модуле и определён( т.е размерность =14 и каждый элемент имеет значение), вопрос в следующем, возможно ли удалить последний элемент массива, не прибегая к созданию новых массивов или тому подобное, просто из этого массива удалить последний элемент, я делал попытку, но в итоге он выдаёт ошибку сразу
Visual Basic
1
2
3
4
5
6
7
8
        Dim n, o As Integer
        n = 0
        For i = 0 To UBound(K) - 1
                ReDim Preserve K(o)
                K(n) = K(i)
                n = n + 1
        Next
    End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2016, 11:54
Ответы с готовыми решениями:

Удаление последнего элемента массива
Функция для удаления последнего элемента в массиве. укажите на ошибку пожалуйста, функция выдает ошибку при вызове delete void...

Удаление элементов одномерного массива, больших последнего элемента этого массива
составьте программу удаления элементов одномерного массива A(N) больших последнего элемента этого массива

Удаление последнего чётного элемента массива
Здравствуйте,помогите дописать программу,пожалуйста. Нужно,чтобы программа удаляла последний чётный элемент массива.Что-то написал,но...

9
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
21.08.2016, 12:14
Очень странный код.
Точнее, какой то бессмысленный набор операторов
1. Сколько раз выполняется ваш цикл?
2. И кто в цикле переопределяет массив?
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
21.08.2016, 13:23  [ТС]
geh, Вот изначально 14 раз выполняется цикл и если последние элементы будут удаляться, то меньше и меньше будет

Добавлено через 6 минут
geh, изначальный код следующий , в этом коде он перемещает первые элементы двух массивов в конец и мне хотелось бы так чтобы он отсекал эти последние элементы при определённом условии
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub propusk()
            Dim q As Integer
            For j = 0 To UBound(K) - 1
                l = F(j)
                F(j) = F(j + 1)
                F(j + 1) = l
            Next j
            For j = 0 To UBound(K) - 1
                q = K(j)
                K(j) = K(j + 1)
                K(j + 1) = q
        Next j
            For i = 0 To UBound(K)
                If K(i) = 0 Then
                    F(i).Show()
                    Exit For
                End If
            Next i
    End Sub
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.08.2016, 13:35
Цитата Сообщение от mihuil Посмотреть сообщение
вопрос в следующем, возможно ли удалить последний элемент массива
Уменьшить размер массива на 1.
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
21.08.2016, 13:36  [ТС]
Puporev, да, и самое главное если возможно так сказать "на прямую" это сделать, то какая будет индексация после этого ?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.08.2016, 13:38
Да та же
For j = 0 To UBound(K) - 1
только K будет на 1 меньше.
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
21.08.2016, 14:03  [ТС]
Puporev, большое спасибо за идею, на вашем примере я сделал по другому, в случае если элемент массива равен одному, он уходит в конец, а если равен нулю он перемещается в конец, но перед группой элементов равных единицы, вообщем
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 Sub propusk()
        Dim q As Integer
        If K(0) = 1 Then
            G = G + 1
            For j = 0 To UBound(K) - 1
                l = F(j)
                F(j) = F(j + 1)
                F(j + 1) = l
            Next j
            For j = 0 To UBound(K) - 1
                q = K(j)
                K(j) = K(j + 1)
                K(j + 1) = q
            Next j
        Else
            For j = 0 To UBound(K) - (1 + G)
                l = F(j)
                F(j) = F(j + 1)
                F(j + 1) = l
            Next
            For j = 0 To UBound(K) - (1 + G)
                q = K(j)
                K(j) = K(j + 1)
                K(j + 1) = q
            Next j
        End If
        For i = 0 To UBound(K)
            If K(i) = 0 Then
                F(i).Show()
                Exit For
            End If
        Next i
    End Sub
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.08.2016, 14:19
Вы спросили как удалить последний элемент, я ответил, и тут Остапа понесло...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
21.08.2016, 18:03
Последний элемент массива удаляется так:

Visual Basic
1
2
       n%=Ubound(A,1)-1
       Redim Preserve A(1 to n%) As Integer
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
21.08.2016, 22:08
Рабочий код
Visual Basic
1
2
3
4
5
Sub PopBack(Arr() As Integer)
    On Error Resume Next
    If (Not Arr) = -1 Then Exit Sub
    If UBound(Arr) = 0 Then Erase Arr Else ReDim Preserve Arr(UBound(Arr) - 1)
End Sub
Добавлено через 15 минут
Эта тема была
Добавить (удалить) 1 элемент с конца массива
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2016, 22:08
Помогаю со студенческими работами здесь

Удаление последнего минимального элемента одномерного массива
что не так? #include "stdafx.h" #include <conio.h> #include <locale.h> #include <time.h> #include <stdlib.h> void FormMassiv...

Удаление последнего элемента динамического массива (программа вылетает с ошибкой)
for (vector<P>::iterator i = p.begin(); i != p.end(); ++i) { i -> life --; if (i -> life ==0) p.erase(i);...

Удаление минимального положительного элемента, расположенного после последнего отрицательного элемента
В одномерном массиве размерностью n удалить минимальный среди положительных элементов, выбранный из части массива, расположенной после...

Инвертировать часть массива с последнего минимального до последнего элемента массива
Инвертировать часть массива с последнего минимального до последнего элемента массива.Помогите пожалуйста)

Инвертировать часть массива с последнего минимального до последнего элемента массива
Инвертировать часть массива с последнего минимального до последнего элемента массива.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru