Страница: 1 |
Страница: 1 |
Вопрос: Посчитать количество строк
Добавлено: 03.03.06 17:28
Автор вопроса: DJ MATHEMATIC
Дана матрица А(m,n),т.е.массив А(m,n).Посчитать количество строк,все элементы которых образуют геометрическую прогрессию!
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 03.03.06 17:59
Похоже, сереженька перекрасился в математика
Анекдот:
Едет толпа в автобусе. Один из толпы - наркот.
Наркоман:
- Кто потерял 10 рублей?
Все молчат. Наркоман снова:
- Кто потерял 10 рублей??
Опять молчание. В третий раз:
- Кто потерял 10 рублей???
Одна подслеповатая старушка, пошарив
по карманам, робко отвечает:
- Ой, кажется я потеряла...
Наркоман:
- Чё сидишь??? Ищи давай!!!
P.S.
DJ MATHEMATIC
Cчитай давай!!!
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 03.03.06 18:22
В Бабруйск, жывотное! Убей сибя ап стенку.
Ржунимагу
ЗЫ Второй нах и нииппёт
Номер ответа: 3
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #3
Добавлено: 03.03.06 19:27
2 LOL: смотрю, че-то ты флудить стал в последнее время...
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 03.03.06 22:29
LOL начитался падонковских словарей
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 03.03.06 22:37
sne тебе то хорошо - 5 звёзд
Номер ответа: 6
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #6
Добавлено: 05.03.06 17:50
Я так понимаю, что проблема в том, как понять, что элементы строки массива являются геометрической прогрессией.
Делается это так:
Берем отношение второго элемента к первому, запоминаем число. Теперь пробегаемся по всем элементам, проверяя, что отношение его к предыдущему равно запомненному числу. Если вдруг это не так - строчка не есть гп и можно переходить к следующей. Если все в порядке - переходим к следующей, увеличив счетчик.
ByVal RowIndex As Long) As Boolean
Dim i As Long
Dim LB As Long, UB As Long
LB = LBound(Matrix, 2)
UB = UBound(Matrix, 2)
If UB > LB Then
For i = LB + 2 To UB
If Not vtEQ(Matrix(RowIndex, i) * Matrix(RowIndex, LB), Matrix(RowIndex, LB + 1) * Matrix(RowIndex, i - 1)) Then
IsGP = False
Exit Function
End If
Next i
IsGP = True
Else
IsGP = True
End If
End Function
Function vtEQ(ByRef Val1 As Variant, ByRef Val2 As Variant, _
Optional ByVal Precision As Double = 0.0000000001) As Boolean
vtEQ = (Val1 - Val2) ^ 2 <= Abs(Val1 * Precision * Val2 * Precision)
End Function
Проблем с нулями быть не должно. И с ошибками округления тоже должно быть OK. И с размерами матрицы тоже. Последнее не тестировал.
Пример использования.
Dim i As Long
ReDim Matrix(0 To 1, 0 To 9)
Matrix(1, 0) = 1E-20
For i = 1 To 9
Matrix(1, i) = Matrix(1, i - 1) * 10#
Next i
Debug.Print IsGP(Matrix, 1)
Подсчет строчек не буду писать. Влом.
PS. Я конечно свех понимаю. Влом. Но зачем же так то посылать?
Я вот и не подозревал, сколько мелочей надо учесть, чтобы не разбирать особые случаи.
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 06.03.06 10:39
Камменты рулят! Готично.