Втори вариянт

 avatar
unknown
plain_text
2 months ago
4.1 kB
2
Indexable
Imports System
Imports System.Runtime

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, holder As Single

        InputMatrixLimits(M, N, D)

        MatrixMinMax(D, M, N, Min, Max)

        AverageMatrixN(D, M, N, average, holder)

        ChangeMatrix(D, M, N, average, holder)

        ' Изважда резултатите
        Console.WriteLine($"Minimalnata stoinost v matricata e: {Min}")
        Console.WriteLine($"Maximalnata stoinost v matricata e: {Max}")
        Console.WriteLine($"Proizvedenieto na otricatelnite elementi e: {negativElem}")
    End Sub

    ' Процедура за въвеждане на размери на матрицата
    Sub InputMatrixLimits(ByRef M As Integer, ByRef N As Integer, ByRef D(,) As Single)
        Dim I%, J%
        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
        ReDim D(M - 1, N - 1)

        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)
        Dim I%, J%
        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 Double
        Dim I%, J%
        Dim negativElem As Double
        For I = 0 To M - 1
            For J = 0 To N - 1
                If D(I, J) < 0 Then
                    negativElem *= D(I, J)
                End If
            Next
        Next
        Return negativElem
    End Function

    ' Процедура за намиране дали има четен брой редове и средното аритметично
    Sub AverageMatrixN(ByVal D(,) As Single, ByVal M As Integer, ByVal N As Integer, ByRef average As Single, ByRef holder As Single)
        Dim I%, J%
        Dim sum 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
        Console.WriteLine($"Srednoto aritmetichno e {average}")
    End Sub

    'Процедура за промяна на матрицата
    Sub ChangeMatrix(ByVal D(,) As Single, ByVal M As Integer, ByVal N As Integer, ByRef average As Single, ByRef holder As Single)
        Dim I%, J%
        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
            Console.WriteLine($"Matricata ima cheten broi redove.")
            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
End Module
Leave a Comment