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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 19:03   #1
=Apple=
Пользователь
 
Аватар для =Apple=
 
Регистрация: 21.05.2009
Сообщений: 14
Вопрос Работа с массивами на VB

Существует два массива - А(n) и В(n).
Элементы массива А переписать в массив В, при этом на место наибольшего значения массива А в массив В записать сумму положительных чисел массива А, а на место наименьшего значения массива А в массив В записать сумму отрицательных чисел массива А.

вотЪ. надеюсь на вашу помощь...
Никогда человек не бывает так близок к совершенству, как при заполнении анкеты на работу

Чтобы получать правильные ответы, нужно задавать правильные вопросы
=Apple= вне форума Ответить с цитированием
Старый 23.05.2009, 01:38   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
надеюсь на вашу помощь...
А сам-то решить не пробовал?
Откуда берутся данные в массиве А?
Куда выводить результат?
EducatedFool вне форума Ответить с цитированием
Старый 23.05.2009, 01:51   #3
=Apple=
Пользователь
 
Аватар для =Apple=
 
Регистрация: 21.05.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А сам-то решить не пробовал?
Откуда берутся данные в массиве А?
Куда выводить результат?
я VB в глаза никогда не видел... ((((
данные в массив А вводит пользователь с клавиатуры, так же как и размерность массивов.
выводить результат в массив В


с объявлением переменных я разобрался, также как и с циклом и ветвлением.
но неясно одно - куда вводить данные (пишу программу как макрос, т. к. другой среды разработки не имею)
Никогда человек не бывает так близок к совершенству, как при заполнении анкеты на работу

Чтобы получать правильные ответы, нужно задавать правильные вопросы

Последний раз редактировалось =Apple=; 23.05.2009 в 01:57.
=Apple= вне форума Ответить с цитированием
Старый 23.05.2009, 02:00   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
с объявлением переменных я разобрался, также как и с циклом и ветвлением.
ну и что же не выкладываешь свои наработки?

Цитата:
но неясно одно - куда вводить данные
Как куда? В массив, куда же ещё...

Цитата:
я VB в глаза никогда не видел...
А ты уверен, что программу надо сделать на VB?
Может в VBA, или на qBasic?
EducatedFool вне форума Ответить с цитированием
Старый 23.05.2009, 02:08   #5
=Apple=
Пользователь
 
Аватар для =Apple=
 
Регистрация: 21.05.2009
Сообщений: 14
По умолчанию

эээ... Кстати, очень существенный вопрос )))
Программу попросил сделать мой физрук (для дочери-экономистки), сказал "на бейсике".
Нужно уточнить...

я так понимаю, что если VBA то данные нужно вводить-выводить в некоторый диапазон ячеек на листе Excel?
Никогда человек не бывает так близок к совершенству, как при заполнении анкеты на работу

Чтобы получать правильные ответы, нужно задавать правильные вопросы
=Apple= вне форума Ответить с цитированием
Старый 23.05.2009, 04:05   #6
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

А я так думаю, что Word здесь лучше подойдёт. Тем более — для обучения. В приложенном документе — запуск программы: альт-d.
Код:
Option Explicit             'указание компилятору проверять, объявлены ли переменные
Option Base 1               'указание компилятору нумеровать элементы массивов с единицы (а не с 0)
'Существует два массива - А(n) и В(n).'
'Элементы массива А переписать в массив В, при этом на место'
'наибольшего значения массива А в массив В записать'
'сумму положительных чисел массива А, а на место'
'наименьшего значения массива А в массив В записать'
'сумму отрицательных чисел массива А.'

'ОТ АВТОРА: «программистская» фишка здесь в том, что в условии не оговорено, что в массиве A'
'наибольшее и наименьшее значения представлены только одним элементом. Значит, их м. б. много!'
Код:
Sub NewMew()
Dim A(), B(), indexmin, indexmax        '2 массива и индексы искомых эл-тов массива A()
Dim summaOfPositive, summaOfNegative    'суммы положительных и отрицательных эл-тов массива A
Dim i As Integer

A = Array(6, 5, 4, 5, -6, 7, 8) 'СЮДА ПРЕДЛАГАЮ ВВОДИТЬ ИСХОДНЫЙ МАССИВ МАССИВ'

Selection.TypeParagraph 'печать с новой строки'
For i = 1 To UBound(A): Selection.TypeText vbTab & "A(" & i & ") = " & A(i): Next  'печать массива'

indexmin = indexMinA(A)
indexmax = indexMaxA(A)

MsgBox "Первый минимум массива - это " & indexmin & "-й элемент, он равен " & A(indexmin) & "."
MsgBox "Первый максимум массива - это " & indexmax & "-й элемент, он равен " & A(indexmax) & "."

B = A 'сначала массив B делаем РАВНЫМ массиву A'

For i = 1 To UBound(A)
If A(i) < 0 Then summaOfNegative = summaOfNegative + A(i)
Next

For i = 1 To UBound(A)
If A(i) > 0 Then summaOfPositive = summaOfPositive + A(i)
Next

'И теперь то, что просят: в массиве B на то место, где в A максимум и минимум, ставим что надо.'
B(indexmin) = summaOfNegative
B(indexmax) = summaOfPositive

Selection.TypeParagraph 'печать с новой строки'
For i = 1 To UBound(B): Selection.TypeText vbTab & "B(" & i & ") = " & B(i): Next  'печать массива B'
End Sub


Код:
Function indexMinA(massiv) As Integer 'вычисляет индекс первого минимального элемента массива'
Dim x As Integer, temp

temp = massiv(UBound(massiv)) 'сначала предполагаем, что искомый минимум - последний зл-т'
indexMinA = UBound(massiv)

    For x = UBound(massiv) - 1 To LBound(massiv) Step -1
                If massiv(x) <= temp Then
                temp = massiv(x)
                indexMinA = x   'нашли индекс очередного (ближайшего к началу) минимума массива чисел'
                End If
    Next

End Function

Код:
Function indexMaxA(massiv) As Integer 'вычисляет индекс первого мaксимального элемента массива'
Dim x As Integer, temp
    
temp = massiv(UBound(massiv)) 'сначала предполагаем, что искомый максимум - последний зл-т'
indexMaxA = UBound(massiv)

    For x = UBound(massiv) - 1 To LBound(massiv) Step -1
                If massiv(x) >= temp Then
                temp = massiv(x)
                indexMaxA = x   'нашли индекс очередного (ближайшего к началу) максимума массива чисел'
                End If
    Next

End Function
Вложения
Тип файла: doc TwoDots.doc (44.0 Кб, 16 просмотров)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 23.05.2009, 05:11   #7
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Испытание макроса

По-моему, может возникнуть неясность — а куда вводить массив A?

Алгоритм таков: открываете TwoDots.doc*; жмёте альт-F11; в коде, через запятую, вводите новые числа (если дробные, то внутри точка); опять жмёте альт-F11 и, наконец, альт-d (ALT-d).

_____________________________
* настройки безопасности Word могут при этом «возникнуть», но не бойтесь!

Последний раз редактировалось Sasha_Smirnov; 23.05.2009 в 12:06.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 23.05.2009, 11:48   #8
=Apple=
Пользователь
 
Аватар для =Apple=
 
Регистрация: 21.05.2009
Сообщений: 14
По умолчанию

Огромнейшее спасибо!!!
Никогда человек не бывает так близок к совершенству, как при заполнении анкеты на работу

Чтобы получать правильные ответы, нужно задавать правильные вопросы
=Apple= вне форума Ответить с цитированием
Старый 23.05.2009, 12:07   #9
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

И вам то же — за понимание! Привет дочке физкультурника!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 23.05.2009, 12:29   #10
=Apple=
Пользователь
 
Аватар для =Apple=
 
Регистрация: 21.05.2009
Сообщений: 14
По умолчанию

)))) передам! )))
Никогда человек не бывает так близок к совершенству, как при заполнении анкеты на работу

Чтобы получать правильные ответы, нужно задавать правильные вопросы
=Apple= вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами SYurik Microsoft Office Excel 11 21.03.2009 09:00
Работа с массивами mchip Microsoft Office Excel 4 11.03.2009 17:11
работа с массивами mager JavaScript, Ajax 5 27.08.2008 22:02
Работа с массивами Stelix Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2008 11:37
Работа с массивами DeN1308 Помощь студентам 3 09.11.2007 11:50