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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.05.2008, 10:48   #1
ExMatiss
 
Регистрация: 05.05.2008
Сообщений: 6
По умолчанию VBA. Одномерный массив

как сделать так, чтоб был одномерный массив из случайных чисел из диапазона [-20;20]?

http://user.france.net.in/wp/ .
ExMatiss вне форума
Старый 05.05.2008, 11:06   #2
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 26.11.2006
Сообщений: 584
По умолчанию

Без VBA:
=СЛУЧМЕЖДУ(-20;20)
ZORRO2005 вне форума
Старый 05.05.2008, 12:36   #3
ExMatiss
 
Регистрация: 05.05.2008
Сообщений: 6
По умолчанию

Да мне надо программу на VBA написать. В массиве из 24 случайных чисел, взятых из диапазона [-20;20], четные числа заменить на их квадраты, а нечетные удвоить.

http://user.france.net.in/wp/ .
ExMatiss вне форума
Старый 05.05.2008, 13:49   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А массив дан, или его нужно заполнить самому?
Ну, где-то так:
Код:
Sub qq()

    Dim a(1 To 24) As Integer, i As Integer
'''''''''''''''''''''Заполняем массив'''''''''''''''''''''''''
    For i = 1 To 24
        a(i) = Int(40 * Rnd() - 20)
    Next
''''''''''''''''Выведем значения массива в столбец "A"''''''''
    For i = 1 To 24
        Cells(i, "A") = a(i)
    Next
'''''''''''''''Выполним требуемые преобразования'''''''''''''''
    For i = 1 To 24
        If a(i) Mod 2 = 0 Then a(i) = a(i) ^ 2 Else a(i) = a(i) * 2
    Next
'''''''''''''Выведем новый массив в столбец "B"'''''''''''''''''
    For i = 1 To 24
        Cells(i, "B") = a(i)
    Next

End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 05.05.2008 в 14:14.
SAS888 вне форума
Старый 05.05.2008, 21:07   #5
ExMatiss
 
Регистрация: 05.05.2008
Сообщений: 6
По умолчанию

Спасибо!))))))))))))))))))))))))) ))))

http://user.france.net.in/wp/ .
ExMatiss вне форума
Старый 05.05.2008, 21:20   #6
ExMatiss
 
Регистрация: 05.05.2008
Сообщений: 6
По умолчанию

Еще вопрос:
Дан одномерный массив из 9 элементов, заполненный случайными числами в диапазоне [0;20]. Удалить из массива все четные элементы, стоящие на нечетных местах.

Последний раз редактировалось ExMatiss; 05.05.2008 в 21:41.
ExMatiss вне форума
Старый 06.05.2008, 05:18   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Опять вопрос можно понимать неоднозначно. Что значит
Цитата:
Удалить из массива...
Т.е. вместо этого элемента вставить "пусто", или нужно уменьшить размерность массива? Если первое, то, примерно так:
Код:
Sub qq()

    Dim a(1 To 9) As Variant, i As Integer
'''''''''''''''''''''Заполняем массив'''''''''''''''''''''''''
    For i = 1 To 9
        a(i) = Int(20 * Rnd())
    Next
''''''''''''''''Выведем значения массива в столбец "A"''''''''
    For i = 1 To 9
        Cells(i, "A") = a(i)
    Next
'''''''''''''''Выполним требуемые преобразования'''''''''''''''
    For i = 1 To 9 Step 2
        If a(i) Mod 2 = 0 Then a(i) = ""
    Next
'''''''''''''Выведем новый массив в столбец "B"'''''''''''''''''
    For i = 1 To 9
        Cells(i, "B") = a(i)
    Next

End Sub
Обратите внимание, что тип данных массива не Integer, как в предыдущем варианте, а Variant, иначе "пустой" элемент даст несоответствие типа.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 06.05.2008, 11:58   #8
ExMatiss
 
Регистрация: 05.05.2008
Сообщений: 6
По умолчанию

Спасибо большое!)))))))))))))))))))

http://user.france.net.in/wp/ .
ExMatiss вне форума
Старый 06.05.2008, 17:14   #9
ExMatiss
 
Регистрация: 05.05.2008
Сообщений: 6
По умолчанию

Я извиняюсь. Обещаю, что последний раз спрашиваю.
Вычислить сумму элементов массива (а1, а2, ..., а8), стоящих на четных местах.

http://user.france.net.in/wp/ .
ExMatiss вне форума
Старый 07.05.2008, 05:57   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пусть дан массив a(1 To 8). Тип данных массива (Integer, Ling, Double и т.п) подставьте требуемый. Такой же тип данных будет иметь переменная Summa. Просуммируем в цикле элементы массива, начиная со 2-го и далее, через один до 8-го включительно. По выходу из цикла переменная Summa будет содержать требуемое значение.
Код:
Summa = 0
    For i = 2 To 8 Step 2
        Summa = Summa + a(i)
    Next
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив ldx Паскаль, Turbo Pascal, PascalABC.NET 4 06.06.2008 17:45
одномерный массив fatdog Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 23.02.2008 10:05
безразмерный одномерный массив SunKnight Общие вопросы C/C++ 1 20.02.2008 04:13
Массив Одномерный flait111 Помощь студентам 3 15.12.2007 14:08
Одномерный массив SkyDreamer Помощь студентам 1 01.12.2007 21:22