Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/50: Рейтинг темы: голосов - 50, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18

Сформировать вектор, каждая компонента которого вычисляется по формуле

11.12.2009, 22:14. Показов 9323. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени, столкнулся с огромной проблемой. Никогда не занимался VBA а тут надо позарез решить задачки. Я понимаю админов, которые говорят что похожее уже разбирали, но нельзя ли сделать исключение разобрать ещё раз, и если можно объяснить.

Как известно через макрос в Экселе нужно написать пару программ:

1. Для заданных натуральных n, m (n, m>=3) проверить: FnFm + Fn+1 Fm+1= Fn+m+1, где Fi — числа Фибоначчи.

2. Пусть a и b — два однотипных числовых вектора размерности N. Сформировать вектор c, каждая компонента которого вычисляется по формуле: ci=max(ai, bi).

3. В вещественной матрице A все отрицательные элементы, расположенные ниже побочной диагонали заменить нулями.

4. Определить количество слов в заданном предложении, начинающихся заданной буквой.

Только очень прошу если взялись помогать, то помогите мне это понять, припишите хоть какие-нибудь объяснения. Буду по гроб жизни благодарен.

С ув. и надеждой Фома_Аквинский.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2009, 22:14
Ответы с готовыми решениями:

Вычислить вектор Y, каждая компонента которго определяется по формуле
Вычислить вектор Y, каждая компонента которго определяется по формуле. Задание прикрепил. x(i) я вычислил, подскажите пожалуйста что...

Создать файл F, каждая компонента которого вычисляется по формуле
Создать файл F, каждая компонента которого вычисляется по формуле: F=(sqrt(i)+5)/i2 I=1,2,…8. Записать в файл L сумму и произведение...

Получить в результате умножения исходной матрицы А(6,7) на вектор-столбец В(7) вектор С(6), каждый элемент которого вычисляется по формуле
Помогите сделать еще одну прогу!!! - Дана действительная матрица А(6,7) и вектор-столбец В(7). Получить в результате умножения исходной...

23
 Аватар для Toxa33rus
3921 / 922 / 125
Регистрация: 16.04.2009
Сообщений: 1,966
13.12.2009, 11:33
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

2.
Visual Basic
1
2
3
For i=1 to N 'повсем элементам матрицы
  c(i) = iif(a(i)>b(i), a(i), b(i)) 'если значение из А больше чем из Б то в С пихаем из А иначе из Б
Next i
4.
Visual Basic
1
2
3
4
Stroka = "посадил дед печень выросла внучка большая яичко упало и разбилось"
bukva = "п" 'первая буква
arr = Split(" " & Stroka, " " & bukva) 'разбиваем предложение в массив используя в качетсве разделителя " п"
otvet = UBound(arr) 'кол-во элементов массива минус один и будет кол-во слов (т.к. массив с нуля то 1 не отнимаем)
Добавлено через 1 минуту
Цитата Сообщение от Фома_Аквинский Посмотреть сообщение
нужно написать пару программ
Пара есть. Остальные значит не нужны
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
13.12.2009, 12:08  [ТС]
Toxa33rus благодарю - спасибо, спасибо, спасибо в кубе, а куб в бесконечности.

только получается что остальные тоже очень нужны =)
0
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
13.12.2009, 15:07
1.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub fib()
Dim n, m As Integer
Dim F() As Variant
n = InputBox("Введите n>=3")
m = InputBox("Введите m>=3")
a = n + m + 1
ReDim F(1 To a) As Variant
F(1) = 1
F(2) = 2
For i = 3 To n + m + 1
F(i) = F(i - 1) + F(i - 2)
Next i
If F(n) * F(m) + F(n + 1) * F(m + 1) = F(n + m + 1) Then
MsgBox ("Для n=" & n & " ,m=" & m & " утверждение FnFm + Fn+1 Fm+1= Fn+m+1 верно")
Else: MsgBox ("Для n=" & n & " ,m=" & m & " утверждение FnFm + Fn+1 Fm+1= Fn+m+1 НЕ верно")
End If
End Sub
Добавлено через 24 минуты
Пояснения:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub fib()
Dim n, m As Integer
Dim F() As Variant
n = InputBox("Введите n>=3") 'Инпут бокс для введения n
m = InputBox("Введите m>=3") 'Инпут бокс для введения m
'числа фиббоначи все включая число Fn+m+1 внесем в массив
a = n + m + 1 
ReDim F(1 To a) As Variant 'Определяем размер массива
F(1) = 1
F(2) = 1 ' упс очепятка Исправлено)
'Цикл для нахождения чисел фиббоначи, и вносим их в массив
For i = 3 To n + m + 1 
F(i) = F(i - 1) + F(i - 2)
Next i
'Проверка необходимого утверждения с выводом соответствующего сообщения
If F(n) * F(m) + F(n + 1) * F(m + 1) = F(n + m + 1) Then
MsgBox ("Для n=" & n & " ,m=" & m & " утверждение FnFm + Fn+1 Fm+1= Fn+m+1 верно")
Else: MsgBox ("Для n=" & n & " ,m=" & m & " утверждение FnFm + Fn+1 Fm+1= Fn+m+1 НЕ верно")
End If
End Sub
1
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
13.12.2009, 17:32
Цитата Сообщение от Фома_Аквинский Посмотреть сообщение
3. В вещественной матрице A все отрицательные элементы, расположенные ниже побочной диагонали заменить нулями.
а что такое побочная диагональ матрицы не напомните? (6 лет назад это было, все позабывал уж наф)
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
13.12.2009, 17:48  [ТС]
ну насколько я помню - главная диагональ это
012
102
120 (то что отмечено нулями)

а побочная это

120
102
012 (то что отмечено нулями)
0
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
13.12.2009, 17:56
Ну я так и подумал) так что вот:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub asd() 'матрица находится в книге на листе1, начиная с ячейки А1
n = InputBox("введите n - число строк")
m = InputBox("введите m - число столбцов")
For i = 2 To n
For j = m - i + 2 To m
If Cells(i, j) < 0 Then
Cells(i, j) = 0
End If
Next j
Next i
End Sub
Задача имеет смыслл вроде бы только для квадратной матрицы поэтому мона m заменить на n и убрать лишний инпут бокс.
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
13.12.2009, 18:02  [ТС]
Благодарю, всё работает - вы не могли бы пояснить мне задачку
Toxa33rus,
Visual Basic
1
2
3
4
Stroka = "посадил дед печень выросла внучка большая яичко упало и разбилось"
bukva = "п" 'первая буква
arr = Split(" " & Stroka, " " & bukva) 'разбиваем предложение в массив используя в качетсве разделителя " п"
otvet = UBound(arr) 'кол-во элементов массива минус один и будет кол-во слов (т.к. массив с нуля то 1 не отнимаем)
я то я не пойму как мне её вбить, чтобы она работала.
0
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
13.12.2009, 18:27
Я бы сделал так, чтоб выглядело попроще) :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub zadacha()
Dim arr As Variant
Dim Stroka, Bukva As String
Dim otvet, i As Integer
Stroka = InputBox("Введите предложение")
Bukva = InputBox("Введите букву")
arr = Split(Stroka, " ") 'разбиваем предложение в массив слов используя в качетсве разделителя " "
otvet = 0
For i = 0 To UBound(arr)
If Left(arr(i), 1) = Bukva Then
otvet = otvet + 1
End If
Next i
MsgBox (otvet)
End Sub
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
13.12.2009, 18:34  [ТС]
ок. спасибо - я покопаюсь - а чтобы вы сделали со 2-ой задачкой.
0
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
13.12.2009, 19:15
Цитата Сообщение от Фома_Аквинский Посмотреть сообщение
ок. спасибо - я покопаюсь - а чтобы вы сделали со 2-ой задачкой.
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Zadacha2() 'вектора записаны в колонках А  В начиная с первой ячейки, результат пишется в колонку С
n = InputBox("Введите размерность векторов")
For i = 1 To n
If Cells(i, 1).Value < Cells(i, 2).Value Then
Cells(i, 3).Value = Cells(i, 2).Value
Else
Cells(i, 3).Value = Cells(i, 1).Value
End If
Next i
End Sub
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
13.12.2009, 19:17  [ТС]
огромное - огромное - огромное спасибо.

Добавлено через 43 секунды
Цитата Сообщение от Xpoft Посмотреть сообщение
n = InputBox("Введите размерность векторов")
только вот как понять "Ввести размерность векторов"?
0
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
13.12.2009, 19:51
Размерность вектора - количество координат) в математике как я помню обозначается dim
Пример : dim(х) = 8, где х = {1,1,1,1,1,1,1,1} (типо вектор х с координатами...)
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
15.12.2009, 21:40  [ТС]
Xpoft, нужна твоя помощь очень очень - написал в ЛС.
0
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 6
16.12.2009, 00:28
не хотелось бы садиться на шею кому-то но ничего не понимаю в VBA. несколько задач.помогите студенту

1. Даны четыре вещественных числа.Найти сумму тех из них,которые больше пяти.Оператор цикла не использовать.

2. Известна масса каждого из 12 предметов.Определить общую массу всего набора предметов.

3. Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1, каждый следующий равен сумме двух предыдущих (1,1,2,3,4,8,13,...).Найти первое число в последовательности Фибоначчи,больше n (значение n вводится с клавиатуры; n>1)

4. Столбцы A, B, C, D заполнены числами. Столбец F заполнить максимальными значениями этих массивов,столбец J - минимальными

5. Диапазон A1:K16 заполнены целыми числами. Расположить столбцы по убыванию суммы этих элементов.

заранее спасибо.
0
 Аватар для Toxa33rus
3921 / 922 / 125
Регистрация: 16.04.2009
Сообщений: 1,966
16.12.2009, 10:00
1.
Visual Basic
1
2
3
4
5
n1 = 4
n2 = 5
n3 = 6
n4 = 7
summa = -(n1 > 5) * n1 - (n2 > 5) * n2 - (n3 > 5) * n3 - (n4 > 5) * n4
Добавлено через 1 минуту
2.
Visual Basic
1
2
3
4
5
massa=0
for i=1 to 12
  mass = massa + A(i)
next i
msgbox massa
1
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
16.12.2009, 10:35
Лучший ответ Сообщение было отмечено как решение

Решение

Pet Создайте другую тему, не захламляйте чужую!!!

Добавлено через 7 минут

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub fib()
Dim n, m As Integer ' определение переменных типа интеджер
Dim F() As Variant 'определение переменной как массива произвольного типа и размерности, не знаю как точнее это описать)
n = InputBox("Введите n>=3") ' ввод пользователем значения n
m = InputBox("Введите m>=3") ' ввод пользователем значения m
a = n + m + 1 ' определение размерности массива
ReDim F(1 To a) As Variant ' переопределение размерности массива
F(1) = 1 ' ввод первого значения массива
F(2) = 1 ' ввод второго значения массива
For i = 3 To n + m + 1 'цикл заполнения массива с третьего элемента до n+m+1 - го
F(i) = F(i - 1) + F(i - 2) ' само заполнение элементов массива
Next i ' счетчик цикла, увеличивает i на 1 после каждого шага цикла
If F(n) * F(m) + F(n + 1) * F(m + 1) = F(n + m + 1) Then ' проверка искомого условия
MsgBox ("Для n=" & n & " ,m=" & m & " утверждение FnFm + Fn+1 Fm+1= Fn+m+1 верно") ' вывод сообщения о том что условие верное
Else: MsgBox ("Для n=" & n & " ,m=" & m & " утверждение FnFm + Fn+1 Fm+1= Fn+m+1 НЕ верно") ' вывод сообщения о том что условие не верное
End If 'конец условного оператора
End Sub
Добавлено через 11 минут
Цитата Сообщение от Xpoft Посмотреть сообщение
Я бы сделал так, чтоб выглядело попроще) :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub zadacha()
Dim arr As Variant 'определение переменной неопределенного типа
Dim Stroka, Bukva As String ' определение переменных строкового типа
Dim otvet, i As Integer ' определение переменных типа интеджер(числовой, точнее юзай гугл))
Stroka = InputBox("Введите предложение") 'ввод предложения пользователем
Bukva = InputBox("Введите букву") 'ввод пользоваетелем первой буквы по которой будет производистя подсчет
arr = Split(Stroka, " ") 'разбиваем предложение в массив слов используя в качестве разделителя " " (пробел)
otvet = 0 ' обнуляем счетчик слов
For i = 0 To UBound(arr) 'цикл по i от 0 до последнего элемента массива arr()
If Left(arr(i), 1) = Bukva Then 'условие если левый знак элемента массива arr() равен букве указанной пользователем, то
otvet = otvet + 1 ' счетчик увеличиваем на 1
End If 'конец условного оператора
Next i ' увеличение i счетчика цикла обязательный элемент оператора for
MsgBox (otvet) ' сообщение выводящее результат
End Sub
Что еще объяснить?
3
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
16.12.2009, 10:39  [ТС]
я понимаю что я немножко обнаглел =) - пояснения просто супер, спасибо - но не мог бы ещё две задачки с матрицей и с вектором объяснить.
0
Asgard's resident
91 / 88 / 10
Регистрация: 03.12.2009
Сообщений: 175
16.12.2009, 10:51
Фома, вы меня извините, но операторы и приемы везде одни и те же, приложите хоть немного мозговых усилий... Пока вы сами не начнете что либо делать по этой тебе, то так и не поймете, как все это работает! Я сам в свое время учился, и мне тоже писали проги по информатике, только вот я сидел в них и разбирался, а через некоторое время начал и сам что-то по аналогии писать...
1
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 18
16.12.2009, 10:59  [ТС]
Благодарю - последую вашему совету. Тем более время ещё есть. Простите если я вас отвлекал =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2009, 10:59
Помогаю со студенческими работами здесь

Массив: Создать вектор, каждый элемент которого вычисляется по заданной формуле...
Мне нужно помочь с этим, я должен вводить числа и мне результат должно выдавать как то Элемент массива i=1..10 {X}_{i}=sin i / 2{e}^{i}...

Сформировать массив B, каждый элемент которого вычисляется по формуле
Задан массив А. 2.5, 4.3, -1, 2.75, 10.48, 11, 9.8, 12, 15.6,18,-10.5. Сформировать массив B, каждый элемент которого вычисляется по...

Сформировать массив, каждый элемент которого вычисляется по формуле
Задан одномерный числовой массив (X) из 10 чисел. сформировать другой одномерный числовой массив (Y), каждый элемент которого вычисляется...

Сформировать массив Y (n), каждый элемент которого вычисляется по формуле Y (i) = X (i) + X (i + n)
Дан массив Х (2n). Сформировать масив Y (n), каждый элемент которого вычисляется по формуле Y (i) = X (i) + X (i + n), где и изменяется от...

Сформировать другой одномерный числовой массив, каждый элемент которого вычисляется по формуле
Задан одномерный числовой массив (X) из 10 чисел. сформировать другой одномерный числовой массив (Y), каждый элемент которого вычисляется...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru