Найти количество соседствующих двух положительных чисел в массиве

Eduard1997

В массиве : C = { 1; 2; -3; 0; -1 ;-7; -9; 4; 5; -6; 3; 2; 9; 10; -7; -9; -5} Найти количество соседствующих двух положительных чисел и количество соседствующих двух отрицательных чисел . как делать?
6 ответов

Eduard1997

В детстве у меня не было велосипеда. Я скачал бейсик и дорвался до бесплатного
        Dim C() As Integer = {1, 2, -3, 0, -1, -7, -9, 4, 5, -6, 3, 2, 9, 10, -7, -9, -5}
        Dim bicycle1, bicycle2 As Boolean
        Dim ResPos, ResNeg As Integer
        For Each MuhaCC As Integer In C
            If MuhaCC > 0 Then
                If bicycle1 Then
                    bicycle1 = False : ResPos += 1
                Else
                    bicycle1 = True
                End If
            Else
                bicycle1 = False
            End If
        Next
        MsgBox("Пар положительных, идущих подряд: " & ResPos)
Это для положительных. Для отрицательных попробуйте самостоятельно.


Eduard1997

Вариант
Dim C As Integer() = {1, 2, -3, 0, -1, -7, -9, 4, 5, -6, 3, 2, 9, 10, -7, -9, -5}
Dim ctrP, ctrM As Integer
For i = 0 To C.Length - 2
    If C(i) * C(i + 1) > 0 Then
        If C(i) > 0 Then
            ctrP += 1
        Else
            ctrM += 1
        End If
    End If
Next
MsgBox(ctrP.ToString & " (+)" & vbCrLf & ctrM.ToString & " (-)")


Eduard1997

Eduard1997, Подкину идейку Функция поиска положительных
Private Function neighbor_positive(C As Integer()) As Integer()
        Dim result As Integer() = New Integer(2) {}
        For i As Integer = 1 To C.Length - 1
            If C(i - 1) > 0 AndAlso C(i) > 0 AndAlso C(i + 1) > 0 Then
                result(0) = C(i - 1)
                result(1) = C(i)
                result(2) = C(i + 1)
                Exit For
            End If
        Next
        Return result
    End Function
Использовать так
neighbor_positive(C)
Где C - твой массив. Для отрицательных можешь воспользоваться моей идеей или придумать свою, что гораздо лучше Результат


Eduard1997

Хех, а я ведь недопонял задание.
Найти количество соседствующих двух положительных чисел
По моей логике три положительных подряд считаются за одну пару.


Eduard1997

Sub Main()
        Dim C() As Integer = {1, 2, -3, 0, -1, -7, -9, 4, 5, -6, 3, 2, 9, 10, -7, -9, -5}
        Dim bicycle1, bicycle2 As Boolean
        Dim ResPos, ResNeg As Integer
        For Each MuhaCC As Integer In C
            If MuhaCC > 0 Then
                If bicycle1 Then
                    bicycle1 = False : ResPos += 1
                Else
                    bicycle1 = True
                End If
            Else
                bicycle1 = False
            End If
            MsgBox("Пар положительных, идущих подряд: " & ResPos)
        Next
        For Each MuhaCC As Integer In C
            If MuhaCC < 0 Then
                If bicycle2 Then
                    bicycle2 = False : ResNeg += 1
                Else
                    bicycle2 = True
                End If
            Else
                bicycle2 = False
            End If
        Next
        MsgBox("Пар отрицательных, идущих подряд: " & ResNeg)
 
    End Sub
Можете проверить в чем ошибка?


Eduard1997

Eduard1997, схватываете четко, нужно было конечно в одном цикле, но так вам, может быть, будет проще объяснить преподавателю. Ошибка всео одна и та по невнимательности: В 15 строке MsgBox нужно вынести за пределы первого цикла, то есть поместить его после NextА можно и вместе со вторым месиджбоксом, это как душе угодно