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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2011, 20:17   #1
T_U_S_U_A
Пользователь
 
Регистрация: 21.01.2011
Сообщений: 10
По умолчанию Массивы одномерный и двумерный

Двумерные массивы.
Даны две матрицы X(6,4); Y(7,3). Найти среднее арифметическое всех элементов в каждой матрице.

Dim X(6, 4) As Integer
Dim Y(7, 3) As Integer
Dim sred1 As Integer
Dim sum1 As Integer
Dim sred2 As Integer
Dim sum2 As Integer

'заполнение массива'
For i1 = 1 To 7
For i2 = 1 To 5
X(i1 - 1, i2 - 1) = 3
Next
Next
For i1 = 1 To 8
For i2 = 1 To 4
Y(i1 - 1, i2 - 1) = 2
Next
Next
'конец заполнения массивов'

sum1 = 0
For i1 = 1 To 7
For i2 = 1 To 5
sum1 = sum1 + X(i1 - 1, i2 - 1)
Next
Next
sred1 = sum1 / (7 * 5)

sum2 = 0
For i1 = 1 To 8
For i2 = 1 To 4
sum2 = sum2 + Y(i1 - 1, i2 - 1)
Next
Next
sred2 = sum2 / (8 * 4)

2)Одномерные массивы.
Подсчитать число точек, находящихся внутри круга радиусом R, с центром в точке с координатами (1,1). Координаты заданы массивами X(N), Y(N).

Dim X(3) As Integer
Dim Y(3) As Integer
Dim radius As Integer
Dim dlina As Integer
Dim counter As Integer

X(0) = 1
X(1) = 1
X(2) = 1

Y(0) = 0
Y(1) = 5
Y(2) = -1

radius = 3
counter = 0
For i = 0 To 3

If Dlin(X(i), Y(i), 1, 1) < radius Then
counter = counter + 1
End If

Next

и для расчета длины

Function Dlin(ByVal nItem1 As Integer, ByVal nItem2 As Integer, ByVal nItem3 As Integer, ByVal nItem4 As Integer)
Dlin = Math.Sqrt((nItem1 - nItem2) * (nItem1 - nItem2) + (nItem3 - nItem4) * (nItem3 - nItem4))

End Function
T_U_S_U_A вне форума Ответить с цитированием
Старый 09.06.2011, 20:18   #2
T_U_S_U_A
Пользователь
 
Регистрация: 21.01.2011
Сообщений: 10
По умолчанию

Программы не работают в чём то ошибки
T_U_S_U_A вне форума Ответить с цитированием
Старый 10.06.2011, 10:29   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В принципе, работают.
Хорошо бы объявить переменные i, i1, i2 как Long или Integer.
А средние, суммы и массивы лучше объявить как Double или Single, они ведь не обязаны быть целыми.

Вместо Math.Sqrt - Math.Sqr или просто Sqr.
Во второй программе последним элементам массивов не присвоено значение, поэтому получается лишняя точка (0,0).

Если программы составляются в Excel VBA, то среднее можно определить без циклов:

sred1=worksheetfunction.Average(X)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 10.06.2011 в 10:32.
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы (одномерный и двумерный) Slezinka Помощь студентам 7 26.05.2011 11:07
ДВУМЕРНЫЙ И ОДНОМЕРНЫЙ МАССИВЫ ALYSA Помощь студентам 6 19.04.2010 21:52
Одномерный и двумерный массивы с функцией. Перец Помощь студентам 1 01.04.2009 15:25