Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Aniay
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 1
#1

Двадцати переменным массива присвоить одно и то же значение, равное наибольшему из них - VBA

21.10.2013, 13:04. Просмотров 1911. Ответов 24
Метки нет (Все метки)

Двадцати переменным массива присвоить одно и то же значение, равное наибольшему из них. Языком VBA
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2013, 13:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Двадцати переменным массива присвоить одно и то же значение, равное наибольшему из них (VBA):

Циклы: двадцати элементам массива присвоить одно и то же значение, равное наибольшему из них
Прошу помощи! Решите пожалуйста задание: Двадцати переменным массива присвоить...

Разработать ИТ, позволяющую каждому элементу одномерного массива Q присвоить значение, равное сумме значений соответствующих элементов одномерных масс
Разработать ИТ, позволяющую каждому элементу одномерного массива Q присвоить...

Переменной присвоить значение равное 1, если максимальный элемент массива А больше максимального элемента В
2.Даны массивы A из N элементов, и B из M элементов.Переменной С присвоить...

определите количество строк в массиве, которые содержат значение, равное наибольшему.
В метании молота состязается n спортсменов. Каждый из них сделал m бросков....

В массиве А[8] найти наибольший элемент в присвоить ему значение, равное среднему арифметическому всех элементов массива
В массиве А найти наибольший элемент в присвоить ему значение, равное среднему...

Даны действительные числа x, y. Если x и y отрицательные, то х присвоить значение удвоенного модуля х. Если положительно одно из них, то увеличить у в
Даны действительные числа x, y. Если x и y отрицательные, то х присвоить...

24
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 162
21.10.2013, 14:23 #2
Тут нужно создать массив (тема с размерностью массива не раскрыта), затем заполнить его (видимо рендомно, или всё же от руки?) , затем создать цикл (количество внутренних циклов равно размерности массива -1) по поиску наибольшего значения, затем это значение присвоить всем элементам массива...
Так в чём вопрос? Как пользоваться поисковиком или листать методичку?
Если просто ждёшь готового листинга с коментариями, то я три года назад так и не дождался и слава богу
0
Hugo121
6211 / 2330 / 390
Регистрация: 19.10.2012
Сообщений: 6,911
21.10.2013, 14:50 #3
Если делать под экселем - то можно использовать формулу листа для определения максимального, затем в цикле заполнить массив полученным значением.
И кто скажет, что не VBA
1
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 162
21.10.2013, 15:14 #4
Цитата Сообщение от Hugo121 Посмотреть сообщение
можно использовать формулу листа
препод скажет... задачка же из универа, сферическая в вакууме. Там точная программа обучения: заполнение массива, сортировка массива, а формулы листа не входят в перечень операторов, которые" должен знать и уметь"
0
Hugo121
6211 / 2330 / 390
Регистрация: 19.10.2012
Сообщений: 6,911
21.10.2013, 16:22 #5
Ну не знаю... Если например ещё в школе что-то такое делал - то кто мне может запретить решать задачу таким способом?
0
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 162
21.10.2013, 17:04 #6
ну человеку с 3122 репутации можно писать что угодно на зачёте... Такие люди и экзамен сдадут устно,.. автор топика пока не готов так дерзить системе
0
Аксима
5744 / 1194 / 187
Регистрация: 12.12.2012
Сообщений: 984
21.10.2013, 17:09 #7
Здравствуйте, Aniay,
Надеюсь, вам подойдет такое решение:

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
Sub PoiskMaximumaIZamena()
    Dim i As Long, n As Long, nMax As Long, msg As String
    '1) Вводим размерности массива.
    n = InputBox("Введите размерность массива.", "Размер массива", 10)
    '2) Создаем массив и заполняем его случайными значениями.
    ReDim vec(1 To n) As Variant
    Randomize 'Инициализируем генератор случайных чисел с помощью системного времени.
    For i = 1 To n              'В цикле для i от 1 до n элементу i массива
        vec(i) = Int(Rnd * 100) 'присваиваем случайное значение в диапазоне
    Next i                      'от 0 (включительно) до 100 (невключительно).
    '3) В строку вывода добавляем исходные значения массива.
    msg = "Массив до замены:" & vbCr & Join(vec)
    '4) Находим максимальное значение в массиве.
    nMax = 0 'Инициализация (можно опустить)'В цикле для i от 1 до n просматриваем
    For i = 1 To n                          'текущий элемент массива. Если он больше
        If vec(i) > nMax Then nMax = vec(i) 'найденного максимума, то присваиваем максимуму
    Next i                                  'значение текущего элемента массива.
    '5) Все элементы массива заменяем его максимальным значением.
    For i = 1 To n      'Для каждого i-го элемента массива при i, изменяющимся
        vec(i) = nMax   'от 1 до n, его значение устанавливается равным максимальному
    Next i              'элементу массива.
    '6) В строку вывода добавляем итоговые значения массива.
    msg = msg & vbCr & vbCr & "Массив после замены:" & vbCr & Join(vec)
    '7) Выводим результаты.
    MsgBox msg, , "Результаты"
End Sub
С уважением,
Aksima
2
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 162
21.10.2013, 17:43 #8
Лучший ответ Сообщение было отмечено как решение

Решение

Aksima, браво!!! Одним кодером меньше, одним копипастом больше...
Рынок труда не будет перегружен конкуренцией, а компьютерная грамотность страны так и не возрастёт...
И ладно, что бесплатно, виртуальные мимимишные няшки тебя лю.
1
Sasha_Smirnov
5460 / 1300 / 142
Регистрация: 08.02.2009
Сообщений: 4,008
Записей в блоге: 29
21.10.2013, 18:57 #9
Уважаемый Евгений С!

Цитата Сообщение от Aniay Посмотреть сообщение
Информатика
, по воспоминаниям, поставлена плохо, особенно в непрофильных вузах и прочих учебных заведениях — кстати: кто там преподаёт, мог бы и объяснить — почему.

Раскрывая тему, предлагаю делать это не ради "няшек"*, а просто как собственное произведение.

Поверьте, такой (творческий) подход даёт иногда уникальные вещи, приятные для прочтения и использования в быту и в работе. Или просто красивые.
__________________________
* которые иногда вообще не участвуют в раскрытии темы (порой весьма занимательной, а то и полезной)
0
toiai
3071 / 868 / 188
Регистрация: 29.05.2010
Сообщений: 1,860
21.10.2013, 19:05 #10
Для нахождения максимального значения я бы использовал следующий код:
Visual Basic
1
nMax=Application.Max(vec)
0
Igor_Tr
4368 / 652 / 35
Регистрация: 17.01.2010
Сообщений: 2,134
21.10.2013, 20:20 #11
Препод, тем более в универе, не имеет права указать, как именно Вам решить, но! он имеет право спросить: "А почему здесь точка?" И не закон, если он это не спросит, если будет сделано все один в один, как в конспекте. А тогда что?
0
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 162
21.10.2013, 23:24 #12
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение

такой (творческий) подход даёт иногда уникальные вещи
Холивар по этой теме устраивать не буду, но все "уникальные" ходы были описаны несколькими постами выше в произвольной форме. В этой тривиальной задаче можно, конечно, изобрести велосипед, но опубликованный листинг это не доказал. Да и не уверен, что это было написано именно для неё и именно сегодня, поскольку в задании явно сказано про 20 переменных, а не про произвольный одномерный массив.
Конечно, мы все тут собрались для рождения своих уникальных вещей и прочтения чужих произведений, но то бы наши ряды ширились не нужно убивать на корню интерес новичков готовыми решениями...
Если бы она (предположим, что всё же не банальный соц. инженеринг))) порылась в методичке, вбила бы пару вопросов в поисковик и чего-то не поняв снова пришла сюда, кто бы ей отказал? Разве я не начал рассказывать, куда копать? Все бы с радостью восполнили пробелы в российском образовании, которое тут уже успели "похвалить"... Но пока она листала бы методичку, перечитывала страницы выданные поисковиком, кругозор бы расширился, а так... зачёт есть, интерес пропал...
Кто уверен что автор топика авторизируется ещё раз, что бы хотя бы банально сказать спасибо?
Цитата Сообщение от Igor_Tr Посмотреть сообщение
не имеет права указать, как именно Вам решить
ну тут ни кто не спорит, речь шла об использовании формул екселя, мне показалось, что это противоречит "на языке VBA", хотя преподы бывают разные, слышал о случаях, когда решение рубили за использование "мудрёных слов", как раз типа
Visual Basic
1
nMax=Application.Max(vec)
потому что хотели видеть от студента алгоритм, так что элегантное решение Aksima будет куда приятней преподу.
1
Sasha_Smirnov
5460 / 1300 / 142
Регистрация: 08.02.2009
Сообщений: 4,008
Записей в блоге: 29
22.10.2013, 04:20 #13
Я предлагаю такую трактовку (запуск из архива двойным щелчком):
1
Вложения
Тип файла: rar Анти-Прокруст.rar (1.1 Кб, 9 просмотров)
Igor_Tr
4368 / 652 / 35
Регистрация: 17.01.2010
Сообщений: 2,134
22.10.2013, 09:10 #14
Тут можна сомневаться. Вопрос в аргументации при диалоге с преподом. Если речь идет только о понимании циклов (или чего-то другого) - это одно и достаточно каких-то примитивных задачек, с другой стороны в сети много профи рекомендуют по максимуму использовать функции листа в коде для ускорения работы. И даже тогда в большинстве случаев без циклов редко можно обойтись.
0
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 162
22.10.2013, 09:34 #15
Может я не так выразился...
Не редко препод требует логики... алгоритма, а не готовой функции которую за тебя уже написали более умные люди. Это вполне нормально.
Про формулы в листе, ексель, конечно, вещь мощная даже без макросов. Я видел файлы, которые расписываю таблицу терминации слаботочной сети дома (а там не всё так просто) или рассчитывают, какие-то гидравлические нагрузки системы отопления дома, для этого строя промежуточные матрицы на скрытых листах, и всё вообще без единого нажатия заветных альт+ф11... Так что и эта задача штатному екселю по зубам, но всё это оффтоп, судя по заданию.
1
Sasha_Smirnov
5460 / 1300 / 142
Регистрация: 08.02.2009
Сообщений: 4,008
Записей в блоге: 29
22.10.2013, 10:10 #16
Тоже не хочу передёргивать, но почему бы в VBA не использовать это самое эй (application)?!

Тему "Информатика" можно же рассматривать и не как упражнение на логику — а просто как овладение ЭВМ!
0
Hugo121
6211 / 2330 / 390
Регистрация: 19.10.2012
Сообщений: 6,911
22.10.2013, 10:26 #17
Sasha, что такое ЭВМ?
Можно не отвечать
0
Sasha_Smirnov
5460 / 1300 / 142
Регистрация: 08.02.2009
Сообщений: 4,008
Записей в блоге: 29
22.10.2013, 12:31 #18
Самое смешное, что в училище, в 1985-м, информатику изучал (на примере паскаля) без всяких ЭВМ! Политика!

(А между прочим, интересно было! Как шажок к будущему)

Добавлено через 4 минуты
Цитата Сообщение от Aniay Посмотреть сообщение
Двадцати переменным массива присвоить одно и то же значение, равное наибольшему из них. Языком VBA
Отличный пример для постижения темы «Информатика»!

Предлагаю разобрать-таки его по косточкам, без всяких там священных войн.
0
Hugo121
6211 / 2330 / 390
Регистрация: 19.10.2012
Сообщений: 6,911
22.10.2013, 12:33 #19
Кстати- "Двадцати переменным массива присвоить одно и то же значение, равное наибольшему из них". Из них, а не из всех!
Нужно в function Amax(x) ещё один параметр добавить
1
Sasha_Smirnov
5460 / 1300 / 142
Регистрация: 08.02.2009
Сообщений: 4,008
Записей в блоге: 29
22.10.2013, 12:38 #20
Ну и я параллельно уже начал философствовать на тему ТС (слава ему):

1. В массиве (для получения результата) должно быть как минимум 20 элементов.
2. Среди элементов должен быть наибольший (достаточно их инициализировать, но всё же!).
3. Присвоение должно производиться не обязательно подряд (в моём варианте я это не учёл).

Я уж не буду "Языком VBA" как-то обыгрывать — тут яснее не скажешь.
1
22.10.2013, 12:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 12:38
Привет! Вот еще темы с решениями:

Присвоить всем элементам массива одно значение разом
создаю массив bool bool Myarray=new bool; как сделать так,чтоб Myarray...

Вставить перед последним отрицательным элементом массива число, равное наибольшему из всех элементов.
1. Вставить перед последним отрицательным элементом массива число, равное...

Присвоить значение динамическим переменным
присвоить значение динамическим переменным, согласно заданному типу данных и...

Переменной присвоить значение, равное скалярному произведению векторов x и y
Дана действительная матрица порядка nxn. Переменнойt присвоить значение, равное...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru