У меня проблема. Не получается вывести вторую матрицу в файл, которая получилась после того, как поменялись по условию столбцы матрицы. Выводит матрицу, похожую на транспонированную,т.е.столбцы становятся строками. Подскажите, как мне решить эту проблему.
Задание программы:
В выбранной матрице столбец, содержащий максимальный элемент матрицы, поменять местами со столбцом, содержащим число, наиболее близкое к среднему значению элементов матрицы.
Вывести исходную и полученную матрицу в файл с помощью Print или Write.
Код программы:
Private Sub lab2()
Dim MAX, Cmax
Dim NB, Cnb
Dim MIN
Open "D:\TESTFILE.TXT" For Output As #1
Print #1, "Матрица"
MsgBox "Здравствуйте! Давайте начнем!", vbCritical, "Приветствие"
Cells.ClearContents
S = 0
metka:
n = InputBox("Введите количество столбцов и строк матрицы", "Ввод", 10)
If n > 10 Then
MsgBox "Количество столбцов более 10 не обрабатываю!", 48, "Ошибка!"
GoTo metka
End If
ReDim matr(1 To n, 1 To n)
Randomize
For i = 1 To n
For j = 1 To n
matr(i, j) = Int(100 * Rnd + 10)
Лист1.Cells(i + 1, j).Value = matr(i, j)
Print #1, Tab, matr(i, j);
S = S + matr(i, j)
Next j
Print #1,
Next i
SA = S / n / n
MsgBox SA, 64, "Среднее арифметическое"
MAX = matr(1, 1)
Cmax = 1
NB = matr(1, 1)
Cnb = 1
MIN = Abs(matr(1, 1) - SA)
For i = 1 To n
For j = 1 To n
If MAX < matr(i, j) Then MAX = matr(i, j): Cmax = j
If MIN > Abs(matr(i, j) - SA) Then NB = matr(i, j): Cnb = j: MIN = Abs(matr(i, j) - SA)
Next j
Next i
Print #1, "Новая матрица"
For j = 1 To n
For i = 1 To n
Select Case j
Case Cmax
Лист1.Cells(i + n + 2, Cnb).Value = matr(i, j)
Case Cnb
Лист1.Cells(i + n + 2, Cmax).Value = matr(i, j)
Case Else
Лист1.Cells(i + n + 2, j).Value = matr(i, j)
End Select
Print #1, Tab, matr(i, j);
Next i
Print #1,
Next j
SA = "Максимальный элемент матрицы " & MAX & vbCrLf _
& "находился в столбце № " & Cmax & vbCrLf _
& "Среднее арифметическое матрицы " & SA & vbCrLf _
& "Наиболее приближённый к среднему элемент " & NB & vbCrLf _
& "находился в столбце № " & Cnb
MsgBox SA, 64, "Полученные результаты"
MsgBox "До свидания!", vbCritical, "Прощание"
Close #1
End Sub