Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 03.03.06 22:29
LOL начитался падонковских словарей :)

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 03.03.06 22:37
sne тебе то хорошо - 5 звёзд :)

Ответить

Номер ответа: 6
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #6
Добавлено: 05.03.06 17:50
Я так понимаю, что проблема в том, как понять, что элементы строки массива являются геометрической прогрессией.
Делается это так:
Берем отношение второго элемента к первому, запоминаем число. Теперь пробегаемся по всем элементам, проверяя, что отношение его к предыдущему равно запомненному числу. Если вдруг это не так - строчка не есть гп и можно переходить к следующей. Если все в порядке - переходим к следующей, увеличив счетчик.

Function IsGP(ByRef Matrix As Variant, _
              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 Matrix() As Double
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
Камменты рулят! Готично.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам