Двумерный массив, сумма элементов строк и вывод в listbox - VB
Формулировка задачи:
Еще раз здравствуйте, снова бестолковый я с простым, видимо, вопросом.
Есть двумерный массив N(k, l). Задание - найти строки с максимальной и минимальной суммой элементов и вывести эти строки, плюс суммы. И уже на стадии нахождения суммы у меня происходит какая-то ерунда. Попытался сейчас даже просто вывести суммы строк через подобный код:
но он мне выдает ошибку размерности в строке форматирования zz, хотя в прошлом задании все выводилось на ура. А вот код поиска минимума, который работает, но выдает вообще непонятно что:
Прошу помочь хоть как-то, но лучше хотя бы немного подробнее объяснить, что именно у меня не так. Заранее благодарю за любую помощь.
В итоге этого кода: выдает он не строку с максимальной суммой элементов, а строго последнюю строку массива; перед ней пихает элемент, непонятно откуда взявшийся; считает все-таки (уже хоть что-то) сумму этих элементов и вписывает ее рядом. Получается, надо понять, почему он вписывает именно последнюю строку, а не строку с максимальной суммой элементов и откуда он берет еще один элемент ,который вписывает перед остальными. Помогите?
Листинг программы
- Dim i, j As Integer
- For i = 0 To k
- S(i) = 0
- For j = 0 To l
- S(i) = S(i) + n(i, j)
- Next
- Next
- Dim zz As String = " "
- Dim z As Integer
- Dim x As Integer
- z = 0
- For x = 0 To l
- S(z) = y(x)
- z = z + 1
- Next
- zz = zz + Format(y(x) + "00") + Space(2)
- ListBox2.Items.Add(zz)
Листинг программы
- Dim i, j As Integer
- Dim ss As String = " "
- Dim zz As String = " "
- For i = 1 To k
- S(i) = 0
- For j = 1 To l
- S(i) = S(i) + n(i, j)
- If S(i) < min Then min = S(i) And minI = i
- Next
- Next
- For j = 1 To l
- z(j) = n(minI, j)
- If z(j) < 0 Then ss = Space(2) Else ss = Space(3)
- zz = zz + Format(z(j), "00") + ss
- Next
- ListBox3.Items.Add(zz)
- ListBox5.Items.Add(min)
Второй код, кстати, не полный, только сейчас заметил, что оттуда удалил случайно куски, связанные с минимум (точнее, связанные с заданием переменной Min), сейчас вспомню, как оно было...
null
в пятой строчке, пока вроде все, что заметил
В общем, забудьте о предыдущих кодах. Возьмем текущий, в котором, если я разберусь, по аналогии смогу сделать такой же. Вот код поиска строки с максимальной суммой элементов и вывода строки и этой суммы:
Листинг программы
- Sub PoiskMax(ByVal n(,) As Integer, ByVal y() As Integer, ByVal k As Integer, ByVal l As Integer, ByRef max As Single, ByRef maxI As Integer)
- Dim i, j As Integer
- Dim yy As String = " "
- Dim ss As String = " "
- For i = 1 To k
- y(i) = 0 : max = y(i) : maxI = i
- For j = 0 To l
- y(i) = y(i) + n(i, j)
- If y(i) > max Then max = y(i) And maxI = i
- Next
- Next
- Dim z As Integer
- z = 0
- For j = 0 To l
- y(z) = n(maxI, j)
- z = z + 1
- If y(j) < 0 Then ss = Space(2) Else ss = Space(3)
- yy = yy + Format(y(j), "00") + ss
- Next
- ListBox2.Items.Add(yy)
- ListBox4.Items.Add(max)
- End Sub
Теперь при точно том же коде он мне выдает просто суммы строк. Я и так мало что понимал, теперь перестал понимать вообще что-либо. Мне нужно 3 массива (основной, двумерный, одномерный суммы и одномерный на вывод)? Видимо, для меня это слишком много - столько программирования без перерывов.
Просмотров много, ответа ни одного. Неужела даже зацепочки, в каком направлении искать и смотреть?
Решение задачи: «Двумерный массив, сумма элементов строк и вывод в listbox»
textual
Листинг программы
- For i = 0 To k
- For j = 0 To l
- sum = sum + n(i, j)
- ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д