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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2015, 20:30   #1
7772014
Новичок
Джуниор
 
Регистрация: 16.01.2015
Сообщений: 1
Восклицание Задача на массив VBA

Задание:Дан массив A = {28, 5.6, 3.67, 4.8, 1.5, 2.7, 7.18, 3.15}. Сформировать новый массив Z(8) по правилу:
если {X}_{i}<=0.5*(m+k)
то {Z}_{i}=3.6 * X(j) + 4.8
если X (j) > 0.5 * (m + k)
то Z(l) = 4.8 * X(j) ^ 2 - 3.16
где m и k - соответственно максимальный и минимальный элементы массива X(8), сформированного по правилу: xi = sin (ai).
Код:
Код:
Private Sub CommandButton1_Click()
Dim N As Byte, A(1 To 8) As Integer, X(1 To 8) As Integer, Z(1 To 8) As Integer
Dim j As Byte, i As Byte, l As Byte
N = InputBox(8)
For i = 1 To 8
A(1) = InputBox(28)
A(2) = InputBox(5.6)
A(3) = InputBox(3.67)
A(4) = InputBox(4.8)
A(5) = InputBox(1.5)
A(6) = InputBox(2.7)
A(7) = InputBox(7.18)
A(8) = InputBox(3.15)
Next i
Cells(1, 1) = "Исходный массив"
For i = 1 To 8
Cells(2, 1 + i) = A(i)
Next i
j = 0
For i = 1 To 8
j = j + 1
X(j) = Sin(A(i))
Next i
m = Max = 0
For i = 1 To 8
If X(j) > Max Then Max = X(j)
Next
k = Min = 9999999
For i = 1 To 8
If X(j) < Min Then Min = X(j)
Next i
l = 0
For i = 1 To 8
If X(j) <= 0.5 * (m + k) Then
l = l + 1
Z(l) = 3.6 * X(j) + 4.8
Else
X (j) > 0.5 * (m + k)
l = l + 1
Z(l) = 4.8 * X(j) ^ 2 - 3.16
End If
Next i
Cells(4, 1) = "Сформированный массив"
For j = 1 To l
Cells(5, 1 + i) = Z(i)
End Sub
Исправте ошибку в коде пожалуйста и составте алгоритм если не трудно.



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.01.2015 в 13:13.
7772014 вне форума Ответить с цитированием
Старый 17.01.2015, 19:18   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Сделал бы так ...
Код:
Private Sub CommandButton1_Click()
Dim N As Byte
Dim A(1 To 8) As Integer
Dim X(1 To 8) As Integer
Dim Z(1 To 8) As Integer
Dim i As Byte

N = 8

A(1) = 28
A(2) = 5.6
A(3) = 3.67
A(4) = 4.8
A(5) = 1.5
A(6) = 2.7
A(7) = 7.18
A(8) = 3.15

Cells(1, 1) = "Исходный массив"
For i = 1 To 8
   Cells(2, 1 + i) = A(i)
Next i

For i = 1 To 8
   X(i) = Sin(A(i))
Next i

m = X(1)
For i = 2 To 8
   If X(i) > m Then m = X(i)
Next

k = X(i)
For i = 1 To 8
   If X(i) < k Then k = X(i)
Next i

For i = 1 To 8
   If X(i) <= 0.5 * (m + k) Then
      Z(i) = 3.6 * X(i) + 4.8
   Else
      Z(i) = 4.8 * X(i) ^ 2 - 3.16
   End If
Next i

Cells(4, 1) = "Сформированный массив"
For j = 1 To 8
   Cells(5, 1 + i) = Z(i)
Next i
End Sub
На наличие/отсутствие ошибок не проверял, но бывшие ошибки убрал ...

Как-то так, ...
Как-то так, ...

Последний раз редактировалось ViktorR; 17.01.2015 в 19:22.
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
VBA одномерный массив Platinu Помощь студентам 1 07.06.2013 18:33
VBA (задача на двумерный массив) Nordbank Фриланс 3 24.12.2010 20:32
Массив в VBA!! NitriNKa Помощь студентам 2 16.04.2009 03:45