Трети вариант
Module Program Sub Main(args As String()) 'Променливи Dim V(,) As Double Dim M, N As Double Dim I, J As Integer Dim Min, Max As Double Dim negativeAverage As Double Dim positiveNSum, negativeN, negativeNCount As Double ReadFromFile(V, M, N) MatrixValues(V, M, N, Min, Max, negativeN, negativeNCount) negativeAverage = Average(negativeNCount, negativeN) ' Изважда резултатите If M = N Then Console.WriteLine("Matricata e kvadratna") Console.WriteLine("Eto e s promeneni diagonali") SecondTask(V, M, N, positiveNSum) For I = 0 To M - 1 For J = 0 To N - 1 Console.Write(V(I, J) & " ") Next Console.WriteLine() Next End If Console.WriteLine($"Minimalnata stoinost v matricata e: {Min}") Console.WriteLine($"Maximalnata stoinost v matricata e: {Max}") Console.WriteLine($"Sredno aritmetichnato na oricatelnite elementi e: {negativeAverage}") Console.WriteLine($"Sumata ot polojitelni elementi e: {positiveNSum}") End Sub Sub ReadFromFile(ByRef V(,) As Double, ByRef M As Double, ByRef N As Double) 'Входни данни Dim F1 As Short Dim Fname As String Dim I, J As Integer Console.WriteLine("Vuvedete direktoriata na faila:") Fname = Console.ReadLine() F1 = FreeFile() 'Изчислителна част FileOpen(F1, Fname, OpenMode.Input) Input(F1, M) : Input(F1, N) ReDim V(M - 1, N - 1) For I = 0 To M - 1 For J = 0 To N - 1 Input(F1, V(I, J)) Next J Next I FileClose(F1) End Sub Sub MatrixValues(ByVal V(,) As Double, ByVal M As Double, ByVal N As Double, ByRef Min As Double, ByRef Max As Double, ByRef negativeN As Double, ByRef negativeNCount As Double) Dim I As Integer Dim J As Integer Min = V(0, 0) Max = V(0, 0) For I = 0 To M - 1 For J = 0 To N - 1 If V(I, J) < Min Then Min = V(I, J) If V(I, J) > Max Then Max = V(I, J) If V(I, J) < 0 Then negativeN += V(I, J) negativeNCount += 1 End If Next Next End Sub 'Функция за средното аритметично на отрицателните елементи Function Average(ByVal negativeNCount As Double, ByVal negativeN As Double) As Double If negativeNCount > 0 Then Return negativeN / negativeNCount Else Return 0 End If End Function Sub SecondTask(ByVal V(,) As Double, ByVal M As Double, ByVal N As Double, ByRef positiveNSum As Double) Dim I As Integer Dim J As Integer positiveNSum = 0 If M = N Then For I = 0 To M - 1 For J = 0 To N - 1 If V(I, J) > 0 Then positiveNSum += V(I, J) End If Next Next For I = 0 To M - 1 For J = 0 To N - 1 If I < J Then V(I, J) += positiveNSum ElseIf I > J Then V(I, J) -= positiveNSum End If Next Next End If End Sub End Module
Leave a Comment