Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2016, 09:22   #1
Demear
Новичок
Джуниор
 
Регистрация: 28.11.2016
Сообщений: 2
Восклицание VBA excel

Задан одномерный массив. Все его элементы, не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы – в конец массива. Новый массив вывести
Demear вне форума Ответить с цитированием
Старый 28.11.2016, 10:18   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Вспомогательный массив использовать?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.11.2016, 12:30   #3
Demear
Новичок
Джуниор
 
Регистрация: 28.11.2016
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Вспомогательный массив использовать?
Можете показать решение с ним и без?
Demear вне форума Ответить с цитированием
Старый 28.11.2016, 12:50   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Demear Посмотреть сообщение
Можете показать решение с ним
Код:
Sub v1()
    Dim ar(10) As Integer, ar1() As Integer
    Dim i As Integer, ptr As Byte
    Dim s As String
    ReDim ar1(UBound(ar))
    For i = LBound(ar) To UBound(ar)
        ar(i) = Int(19 * Rnd) - 10
        s = s & CStr(ar(i)) + ", "
    Next i
    ptr = LBound(ar)
    For i = LBound(ar) To UBound(ar)
        If ar(i) <> 0 Then
            ar1(ptr) = ar(i)
            ptr = ptr + 1
        End If
    Next i
    
    For i = LBound(ar1) To UBound(ar1)
        If i < ptr Then
            ar(i) = ar1(i)
        Else
            ar(i) = 0
        End If
    Next i
    s = s & vbNewLine
    For i = LBound(ar) To UBound(ar)
        s = s + CStr(ar(i)) + ", "
    Next i
    MsgBox s
End Sub
Цитата:
и без
Код:
Sub v2()
    Dim ar(10) As Integer
    Dim i As Integer, j As Integer, k As Integer
    Dim s As String
    Randomize
    s = ""
    For i = LBound(ar) To UBound(ar)
        ar(i) = Int(19 * Rnd) - 10
          s = s + CStr(ar(i)) + ",   "
    Next i
    i = LBound(ar)
    Do While i <= UBound(ar)
        If ar(i) = 0 Then
            For j = i To UBound(ar) - 1
                k = ar(j)
                ar(j) = ar(j + 1)
                ar(j + 1) = k
            Next j
        End If
        i = i + 1
    Loop
    s = s + Chr(13)
    For i = LBound(ar) To UBound(ar)
        s = s + CStr(ar(i)) + ",   "
    Next i
    MsgBox s
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 28.11.2016 в 13:57.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести данные в новую книгу Excel из другой книги Excel через VBA Алла94 Microsoft Office Excel 0 08.10.2014 16:16
Совместимость Excel 2007 VBA - Excel 2010 VBA Genas Microsoft Office Excel 2 28.11.2012 15:33
VBA Word,VBA Excel решить 2 задачи fafolo4ka Фриланс 6 05.03.2012 01:15
Excel c VBA Алёна 123 Microsoft Office Excel 1 15.07.2011 18:04
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47