Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
MarinaBorisova
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 3
1

Программирование в VBA

16.02.2016, 07:47. Просмотров 332. Ответов 4

Помогите пожалуйста полному чайнику разобраться в написании программного кода, который позволял бы вводить три массива данных, считать сумму их элементов, а также сумму квадратов элементов, перемножение одного массива на другой, и потом из подученных результатов составлял бы матрицу, матрицу обратную данной матрице и умножал бы матрицу на вектор. Или хотябы только действия с матрицами, но в которой числа задаются из экселя
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2016, 07:47
Ответы с готовыми решениями:

Купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко
Поздравьте меня я купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко, могу процитировать...

Программирование на VBA
Я бы хотела вас попросить сделать эти три задания на языке программирования VBA. Прошу помощи,очень...

Программирование VBA.
На оси ОХ расположены 3 точки "а","б","с" . Определить какая из точек "б","с" расположена ближе...

VBA Программирование
Ребят, как можно сделать так, что-бы в ВБА можно было вводить новую запись через инпут-бокс?

программирование в VBA
Подскажите, пожалуйста, что означают строчки в данном коде. Private Sub CheckBox1_Click():...

4
SoftIce
comment ca va
10452 / 3964 / 1013
Регистрация: 27.07.2011
Сообщений: 9,619
Завершенные тесты: 1
16.02.2016, 08:58 2
Цитата Сообщение от MarinaBorisova Посмотреть сообщение
вводить три массива данных, считать сумму их элементов, а также сумму квадратов элементов, перемножение одного массива на другой, и потом из подученных результатов составлял бы матрицу, матрицу обратную данной матрице и умножал бы матрицу на вектор
Вам сразу все решить? Или по частям?
0
MarinaBorisova
0 / 0 / 0
Регистрация: 16.02.2016
Сообщений: 3
16.02.2016, 09:00  [ТС] 3
Лучше бы по частям..и чтоб я хоть чуточку поняла откуда что взялось и как это делается
0
Shersh
16.02.2016, 09:06
  #4

Не по теме:

Цитата Сообщение от MarinaBorisova Посмотреть сообщение
Лучше бы по частям
Это стопудово лучше и правилам соответствует (http://www.cyberforum.ru/announcement.php?a=3 - почитайте (особенно про один вопрос в теме и внятные названия для каждой темы), не пожалеете!).

0
Святой НякаЛайк
482 / 109 / 50
Регистрация: 28.10.2015
Сообщений: 260
18.02.2016, 01:25 5
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Sub massive()
    Dim r(4)    ' создан массив из пяти элементов
    r(0) = 1    ' первый элемент ( массивы нумеруются С НУЛЯ!) массива r() равен 1
    r(1) = 2    ' второй элемент равен 2
    r(2) = 3    ' и так далее
    r(3) = 4
    r(4) = 5
    ' первый массив создан!
    
    Dim t(4)    ' продолжаем тем же образом:
    t(0) = 1
    t(1) = 2
    t(2) = 3
    t(3) = 4
    t(4) = 5
    ' второй массив создан!
    
    Dim y(0 To 4)    ' продолжаем:
    y(0) = t(0)      ' копируем значения из одного массива в другой
    y(1) = t(1)
    y(2) = t(2)
    y(3) = t(3)
    y(4) = t(4)
    ' третий массив создан!
    
    Dim summa       ' создана переменная, которая будет содержать сумму элементов массивов
    summa = 0       ' для начала указываем, что она пуста, то есть равна нулю-лю
    For i = 0 To 4  ' заводим цикличную процедуру:
        summa = summa + r(i) + t(i) + y(i)  ' сначала i = 0, сумма элементов номер 0 в трех массивах отправляется в summa
    Next    ' к i  прибавляется 1 и цикл повторяется до тех пор, пока i не станет равно 4, то есть так мы пройдемся по всем значениям всех массивов и сложим в сумму их значения
 
    Dim summa_qvadratov
    summa_qvadratov = 0
    For i = 0 To 4
        summa_qvadratov = summa_qvadratov + (r(i) ^ 2) + (t(i) ^ 2) + (y(i) ^ 2)
    Next    ' то же самое, но суммируем на сей раз квадраты элементов массивов
 
    Dim umnozim(4)  ' теперь циклом переберем два массива и из произведения их элементов создадим новый массив
    For i = 0 To 4
        umnozim(i) = r(i) * y(i)
    Next
    
    
    ' Матрица - это двумерный массив, поэтому:
    ' создаем массив двумерный и балуемся с ним как хотим:
    Dim matrix(4, 4)    ' это значит создан массив-матрица, первая четверка - количество строк, вторая четверка - количество столбцов
    For i = 0 To 4      ' При этом количество строк на самом деле = 5, потому что в массивах счет начинается с нуля! Так что 4 - это на самом деле 5!
        matrix(i, 0) = r(i) * y(i)  ' умножили один массив на другой, результаты поместили в один столбец матрицы
        matrix(i, 1) = t(i) * y(i)  ' так же заполнили второй столбец
        matrix(i, 2) = t(i) * r(i)  '  и третий тоже!
    Next    ' матрица заполнена произведениями трех массивов друг на друга!
 
    Dim matrix_obratnaya(4)     ' матрица, обратная имеющейся:
    For i = 0 To 4
        matrix_obratnaya(i) = matrix(4 - i, 0)
        matrix_obratnaya(i) = matrix(4 - i, 1)
        matrix_obratnaya(i) = matrix(4 - i, 2)
    Next
    
    Dim matrix_vector()     ' умножение матрицы на вектор
            ' попробуете сделать самостоятельно?
            ' А то вот пишу код строку за строкой и думаю
            ' "А зачем полному чайнику такие задачи понадобилось разрешить?" ("кипеть или не кипеть - вот в чем вопрос...")
            ' "Наверное, отчаянно желает научиться..."
            ' Кроме того, тут как-бы не хватает уточнения: матрицу умножить на вектор строку или вектор столбец?
            ' Всё, что нужно для последнего решения здесь дано и показано, приложите усилие и всё получится, я верю в это!
End Sub
откройте учебник/образовательную статью по VBA, найдите циклы For... Next, найдите массивы и работу с ними. После прочтения присмотритесь к данному выше коду. Должно всё стать ясным

Visual Basic
1
2
3
4
5
6
7
8
Sub massive_with_cells()
    Dim massive(4, 2)   ' создали массив двумерный, то есть матрица
    For i = 1 To 5
        massive(i - 1, 0) = Cells(i, 1) ' первый столбец равен первому столбцу из диапазона A1:C5
        massive(i - 1, 1) = Cells(i, 2) ' второй равен второму и так далее!
        massive(i - 1, 2) = Cells(i, 3)
    Next    ' вот так матрица заполняется значениями из ячеек экселя!
End Sub
Ну а это касается массива, заполненного значениями ячеек.
Enjoy!

Добавлено через 2 минуты
Но мы, форумчане, всё-таки настаиваем: соблюдайте этикет форума - в одной теме один вопрос и мы сильно огорчаемся, когда тот, кто спрашивает, сам не прилагает усилия и самостоятельно ничего не предпринимает.
Удачи и опыта!

Добавлено через 6 минут
отсюда вытекает житейский опыт: если долго настаивать форумчанина в этикете, он начинает изрядно горчить!
0
18.02.2016, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2016, 01:25

Программирование в VBA
В модуле Программирование_Часть1 объявите глобальные переменные для всего модуля с названиями...

Программирование в VBA
Добрый вечер, мне очень нужна ваша помощь с заданием в программе VBA , которое я прикрепила ниже, я...

Re: Программирование VBA.
Добрый вечер помогите пожалуйста написать программу Разработать экономическую функцию...


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

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

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