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

Удаление элемента массива со смещением

04.10.2017, 22:41. Показов 6211. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, доброго времени суток. Задача стоит такая:"Сжать массив, выбросив из него элементы, соответствующие чёрному цвету". При запуске программы, если черный цвет, то бишь значение равное 0, попадает на последний элемент массива, то программа выполняется не корректно, а точнее выводит нечто мне не постижимое. Вот часть кода, где происходит "сжатие". Помогите, пожалуйста.
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
Private Sub Command4_Click()
 n = 14
 r = 0
 
  For k = 1 To 10
  For i = 1 To n
 
  If Mas(i) = 0 Then
 Print "CH CV"
   If Mas(14) = 0 Then
  Label14.BackColor = &H8000000F
  End If
  For j = i To n - 1
  Mas(j) = Mas(j + 1)
  Next j
   r = r + 1
 
End If
  Next i
  Next k
   If r = 0 Then
   MsgBox "Сжатие невозможно"
   End
   End If
  Print "Чёрных квадратов = "; r
  n = n - r
     For i = 1 To n
      Print "value"; i; "znach"; Mas(i)
Next i
 
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2017, 22:41
Ответы с готовыми решениями:

Удаление последнего элемента из массива
У меня есть массив, он объявлен в модуле и определён( т.е размерность =14 и каждый элемент имеет значение), вопрос в следующем, возможно ли...

Удаление элемента массива со смещением
удаляю unset($_SESSION]); получаю Array ( => Array ( => 147 => Диван Лилак ...

Удаление элемента массива со смещением остальных
Есть массива array(=>"q", =>"w", =>"e") если удалить элемент "1", то массив будет выглядеть так:...

6
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
04.10.2017, 23:51
Есть такая функция Filter называется, может она поможет

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
34
35
36
37
38
39
40
41
42
Option Explicit
Const r = 90
Dim WithEvents cb As CommandButton
Dim a$(), i&, s$, t&, v
 
Private Sub cb_Click()
    a = Filter(a, "Черный", False, 1)
    Создание_лэйблов
End Sub
 
 
Private Sub Создание_лэйблов()
    For Each v In Controls
        If TypeName(v) = "Label" Then Controls.Remove v
    Next
    t = r + cb.Height
    For i = 0 To UBound(a)
        With Controls.Add("vb.label", "l" & i)
            .BackColor = IIf(InStr(1, a(i), "Черный", 1), vbBlack, vbWhite)
            .ForeColor = vbGrayText
            .AutoSize = 1
            .Caption = a(i)
            .Move r, t: t = t + .Height
            .Visible = 1
        End With
    Next
 
End Sub
 
Private Sub Form_Load()
    s = ""
    Set cb = Controls.Add("vb.CommandButton", "cb"): With cb
        .Move r, r
        .Caption = "Убрать черные"
        .Visible = 1
    End With
    Randomize Timer 'Создаем массив
    For i = 1 To 10
        s = s & " " & i & "-" & IIf(Fix(Rnd * 2), "Черный", "Белый")
    Next: a = Split(Mid$(s, 2))
    Создание_лэйблов
End Sub
Миниатюры
Удаление элемента массива со смещением   Удаление элемента массива со смещением  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
05.10.2017, 11:42
Что-то страшное навернутно... Аж три вложенных цикла. Хотя удаление из массива по критерию (сжатие) делается за один цикл. Вот так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'::: удаление из массива Arr нулей и отрицательных
'::: положительные переносятся в начало массива
'::: m - количество положительных
Sub PressArr(Arr() as integer, m as integer)
      i_from%=1
      i_to%=1
      n=Ubound(Arr)
      Do while (i_from%<=n)
         if Arr(i_from%) > 0 then
           Arr(i_to%)=Arr(i_from%)
           i_to%=i_to%+1
         end if
         i_from%=i_from%+1
      Loop
      m=i_to%-1
End sub
1
0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 5
05.10.2017, 23:13  [ТС]
что означает %?
0
Заблокирован
05.10.2017, 23:41
Цитата Сообщение от Ioan_1995 Посмотреть сообщение
что означает %?
- это уважаемый Catstail даёт директиву: ПЕРЕМЕННАЯ i_from ИМЕЕТ ТИП AS INTEGER!
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
10.10.2017, 15:37
Цитата Сообщение от Остап Бонд Посмотреть сообщение
это уважаемый Catstail даёт директиву: ПЕРЕМЕННАЯ i_from ИМЕЕТ ТИП AS INTEGER!
если не ошибаюсь наследие QB

Гораздо красивее так...

Visual Basic
1
2
3
4
5
6
7
8
9
          '
          ' Dim ИНДИФИКАТОР_ПЕРЕМЕННОЙ_ИМЯ_ПЕРЕМЕННОЙ   as ТИП_ПЕРЕМЕННОЙ
          ' Все просто, наглядно и понятно....))))
 
          Option Explicit
 
          Dim intZapis   as Integer
          Dim strFix      as String
          Dim btFlag     as Byte
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
11.10.2017, 08:01
Цитата Сообщение от kreotodr Посмотреть сообщение
Гораздо красивее так...
- понятие красоты зачастую индивидуально...
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2017, 08:01
Помогаю со студенческими работами здесь

Как вставить индекс после максимального элемента массива со смещением остальных элементов?
После первого максимального (минимального) элемента массива вставьте его номер, передвинув все элементы массива, сле¬дующие за ним, вправо...

Удаление столбцов со смещением
Дан двумерный массив целых чисел. Удалить из него все столбцы, сумма элементов которых больше заданного числа. под удалением столбца...

Сделать добавление элемента в массив и удаление элемента из массива используя STL
Всем привет. Помогите пожалуйста написать. Нужно использовать STL. Необходимо сделать добавление элемента в массив и удаление элемента из...

Удаление строки из матрицы со смещением
Дана матрица 6х4. Создана статически. Вычеркнуть (то есть переписать данные циклически вперед) рядок с заданным номером (номер задает...

Динамическое удаление компонентов со смещением в пространстве
procedure delimage; var i,j:integer; check:array of integer; begin j:=1; for i:=1 to 100 do {îáíóëåíèå ýëåìåíòîâ ìàññèâà} ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru