Трети вариант
unknown
plain_text
10 months ago
3.7 kB
4
Indexable
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
Editor is loading...
Leave a Comment