Untitled

 avatar
unknown
plain_text
4 months ago
4.7 kB
3
Indexable
Imports System

Module Program
    Sub Main(args As String())
        ' Променливи
        Dim D(,) As Single
        Dim M, N As Integer
        Dim Min, Max As Single
        Dim negativElem As Single
        Dim average, sum, holder As Single

        ' Въвежда размерите на матрицата
        InputMatrixLimits(M, N)

        ' Създава и попълва на матрицата
        ReDim D(M - 1, N - 1)
        InputMatrixNumbers(M, N, D)

        ' Намира минимална и максимална стойност
        MatrixMinMax(D, M, N, Min, Max)

        ' Изчислява произведението на отрицателните елементи
        negativElem = MatrixNegativeElem(D, M, N)

        ' Изважда резултатите
        Console.WriteLine($"Minimalnata stoinost v matricata e: {Min}")
        Console.WriteLine($"Maximalnata stoinost v matricata e: {Max}")
        If negativElem = 1 Then
            Console.WriteLine("Nqma otricatelni elementi.")
        Else
            Console.WriteLine($"Proizvedenieto na otricatelnite elementi e: {negativElem}")
        End If
        If M Mod 2 = 0 Then
            Console.WriteLine($"Matricata ima cheten broi redove. Srednoto aritmetichno e {average}")
            For I = 0 To M - 1
                For J = 0 To N - 1
                    Console.Write(D(I, J) & " ")
                Next
                Console.WriteLine()
            Next
        End If
    End Sub

    ' Процедура за въвеждане на размери на матрицата
    Sub InputMatrixLimits(ByRef M As Integer, ByRef N As Integer)
        Do
            Console.Write("Vuvedete broi redove [1-7]: ")
            M = Console.ReadLine()
        Loop Until M >= 1 And M <= 7
        Do
            Console.Write("Vuvedete broi coloni [1-9]: ")
            N = Console.ReadLine()
        Loop Until N >= 1 And N <= 9
    End Sub

    ' Процедура за въвеждане на числа в матрицата
    Sub InputMatrixNumbers(ByVal M As Integer, ByVal N As Integer, ByRef D(,) As Single)
        Console.WriteLine("Vuvedete chisla za matricata:")
        For I = 0 To M - 1
            For J = 0 To N - 1
                Console.Write($"D({I + 1},{J + 1}) = ")
                D(I, J) = Console.ReadLine()
            Next
        Next
    End Sub

    ' Процедура за намиране на минимум и максимум
    Sub MatrixMinMax(ByVal D(,) As Single, ByVal M As Integer, ByVal N As Integer, ByRef Min As Single, ByRef Max As Single)
        Min = D(0, 0)
        Max = D(0, 0)
        For I = 0 To M - 1
            For J = 0 To N - 1
                If D(I, J) < Min Then Min = D(I, J)
                If D(I, J) > Max Then Max = D(I, J)
            Next
        Next
    End Sub

    ' Функция за произведението на отрицателните елементи
    Function MatrixNegativeElem(ByVal D(,) As Single, ByVal M As Integer, ByVal N As Integer) As Single
        Dim negativElem As Single = 1
        Dim hasNegative As Boolean = False
        For I = 0 To M - 1
            For J = 0 To N - 1
                If D(I, J) < 0 Then
                    negativElem *= D(I, J)
                    hasNegative = True
                End If
            Next
        Next
        If Not hasNegative Then
            Return 1 ' Няма отрицателни елементи
        End If
        Return negativElem
    End Function

    ' Процедура за намиране дали има четен брой редове и средното аритметично
    Sub AverageMatrixN(ByVal D(,) As Single, ByVal M As Integer, ByVal N As Integer, average As Single, sum As Single, holder As Single)
        If M Mod 2 = 0 Then
            For I = 0 To M - 1
                For J = 0 To N - 1
                    sum += D(I, J)
                Next
            Next
            average = sum / (M * N)
            holder = M \ 2
        End If
    End Sub
    'Процедура за промяна на матрицата
    Sub changeMatrix(ByVal D(,) As Single, ByVal M As Integer, ByVal N As Integer, average As Single, sum As Single, holder As Single) As Integer
        If M Mod 2 = 0 Then
            For I = 0 To M - 1
                For J = 0 To N - 1
                    If I < holder Then
                        D(I, J) += average
                    End If
                    If I > holder Then
                        D(I, J) -= average
                    End If
                Next
            Next
        End If
    End Sub
End Module
Editor is loading...
Leave a Comment