Переупорядочить массив по убыванию его элементов в строках - VB
Формулировка задачи:
помогите доделать
задание:
1.Организовать ввод элементов двумерного массива размерностью N*M из текстового файла(открытие файла через объкеты DriveListBox,DirListBox,FileListBox)
2.Вывести исходный массив в таблицу MSFlexGrid.
3.Определить сумму элементов массива с четными значениями индексов его элементов.
4.Найти местоположения (номера индексов) максимальных элементов массива.
5. Элементы массива упорядочены по возрастанию элементов в строках. Переупорядочить массив по убыванию его элементов в строках.
Решение задачи: «Переупорядочить массив по убыванию его элементов в строках»
textual
Листинг программы
Option Explicit Dim Arr() As Integer Private Sub Command1_Click() Call ReadTxtFile(App.Path + "\input.txt") Call ShowArrayInFlexGrid(Arr) Call MaxAndSum(Arr) End Sub Private Sub Command2_Click() Call ReadTxtFile(App.Path + "\input.txt") Call SortArray(Arr, 1) End Sub Private Sub Command3_Click() Call ReadTxtFile(App.Path + "\input.txt") Call SortArray(Arr, 2) End Sub Private Sub ReadTxtFile(ByVal FileName As String) Dim n As Integer, m As Integer, i As Integer, j As Integer, ff As Integer ff = FreeFile Open FileName For Input As #ff 'открытие файла на чтение, задание ему номера ff Input #ff, n, m 'ввод размерности из файла ReDim Arr(1 To n, 1 To m) 'установление размера массива For i = 1 To n 'цикл, отсчитывающий номера строк в массиве For j = 1 To m 'цикл, отсчитывающий номера столбцов в массиве Input #ff, Arr(i, j) 'оператор ввода из структур с разделителями (запятые, пробелы) Next j 'конец внутреннего цикла Next i 'конец внешнего цикла Close #ff 'закрытие файла End Sub Private Sub MaxAndSum(ByRef a() As Integer) Dim i As Integer, j As Integer, max As Integer Dim n As Integer, m As Integer, s As String, sum As Long n = UBound(a, 1): m = UBound(a, 2) Label1.Caption = "Максимальные значения массива:" max = a(1, 1) For i = 1 To n 'цикл, отсчитывающий номера строк в массиве For j = 1 To m 'цикл, отсчитывающий номера столбцов в массиве If i Mod 2 = 0 And j Mod 2 = 0 Then sum = sum + a(i, j) If a(i, j) > max Then max = a(i, j) Next j 'конец внутреннего цикла Next i 'конец внешнего цикла For i = 1 To n 'цикл, отсчитывающий номера строк в массиве For j = 1 To m 'цикл, отсчитывающий номера столбцов в массиве If a(i, j) = max Then s = s & "Arr (" & CStr(i) & "," & CStr(j) & ") = " & CStr(max) & vbCrLf Next j 'конец внутреннего цикла Next i 'конец внешнего цикла Label1.Caption = Label1.Caption & vbCrLf & s & vbCrLf & _ "Сумма элементов массива, имеющих четные индексы:" & vbCrLf & sum End Sub Private Sub ShowArrayInFlexGrid(ByRef a() As Integer) Dim i As Integer, j As Integer, n As Integer, m As Integer n = UBound(a, 1): m = UBound(a, 2) MSFlexGrid1.Clear 'очистка таблицы на случай многократного использования MSFlexGrid1.Rows = n + 1 'установление количества строк в таблице MSFlexGrid1.Cols = m + 1 'установление количества колонок в таблице For i = 1 To n 'цикл, отсчитывающий номера строк в массиве MSFlexGrid1.TextMatrix(i, 0) = CStr(i) For j = 1 To m 'цикл, отсчитывающий номера столбцов в массиве MSFlexGrid1.TextMatrix(0, j) = CStr(j) MSFlexGrid1.TextMatrix(i, j) = CStr(a(i, j)) 'запись в соответствующую ячейку элемента массива Next j 'конец внутреннего цикла Next i 'конец внешнего цикла End Sub Private Sub SortArray(ByRef a() As Integer, ByVal OrderSort As Integer) Dim i As Integer, j As Integer, ar() As Integer Dim n As Integer, m As Integer, k As Integer, tmp As Integer n = UBound(a, 1): m = UBound(a, 2) For i = 1 To n 'цикл, отсчитывающий номера строк в массиве For j = 1 To m 'цикл, отсчитывающий номера столбцов в массиве For k = 1 To m - 1 Select Case OrderSort Case 1 If a(i, k) > a(i, k + 1) Then tmp = a(i, k) a(i, k) = a(i, k + 1) a(i, k + 1) = tmp End If Case 2 If a(i, k) < a(i, k + 1) Then tmp = a(i, k) a(i, k) = a(i, k + 1) a(i, k + 1) = tmp End If End Select Next k Next j 'конец внутреннего цикла Next i 'конец внешнего цикла Call ShowArrayInFlexGrid(a) Call MaxAndSum(a) End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д