Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 10

Двумерный массив, сумма элементов строк и вывод в listbox

24.04.2011, 22:13. Показов 8382. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Еще раз здравствуйте, снова бестолковый я с простым, видимо, вопросом.

Есть двумерный массив N(k, l). Задание - найти строки с максимальной и минимальной суммой элементов и вывести эти строки, плюс суммы. И уже на стадии нахождения суммы у меня происходит какая-то ерунда. Попытался сейчас даже просто вывести суммы строк через подобный код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)
но он мне выдает ошибку размерности в строке форматирования zz, хотя в прошлом задании все выводилось на ура. А вот код поиска минимума, который работает, но выдает вообще непонятно что:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)
Прошу помочь хоть как-то, но лучше хотя бы немного подробнее объяснить, что именно у меня не так. Заранее благодарю за любую помощь.

Добавлено через 1 час 19 минут
Второй код, кстати, не полный, только сейчас заметил, что оттуда удалил случайно куски, связанные с минимум (точнее, связанные с заданием переменной Min), сейчас вспомню, как оно было...

Добавлено через 1 минуту
Visual Basic
1
S(i) = 0 : min = S(1) : minI = 1
в пятой строчке, пока вроде все, что заметил

Добавлено через 24 минуты
В общем, забудьте о предыдущих кодах. Возьмем текущий, в котором, если я разберусь, по аналогии смогу сделать такой же. Вот код поиска строки с максимальной суммой элементов и вывода строки и этой суммы:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
В итоге этого кода: выдает он не строку с максимальной суммой элементов, а строго последнюю строку массива; перед ней пихает элемент, непонятно откуда взявшийся; считает все-таки (уже хоть что-то) сумму этих элементов и вписывает ее рядом. Получается, надо понять, почему он вписывает именно последнюю строку, а не строку с максимальной суммой элементов и откуда он берет еще один элемент ,который вписывает перед остальными. Помогите?

Добавлено через 26 минут
Теперь при точно том же коде он мне выдает просто суммы строк. Я и так мало что понимал, теперь перестал понимать вообще что-либо. Мне нужно 3 массива (основной, двумерный, одномерный суммы и одномерный на вывод)? Видимо, для меня это слишком много - столько программирования без перерывов.

Добавлено через 4 часа 1 минуту
Просмотров много, ответа ни одного. Неужела даже зацепочки, в каком направлении искать и смотреть?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2011, 22:13
Ответы с готовыми решениями:

Дан двумерный массив. Удалить из него первую из строк, сумма элементов которых не превышает некоторое заданное число
Помогите с решением: Дан двумерный массив. Удалить из него первую из строк, сумма элементов которых не превышает некоторое заданное...

Двумерный массив, сумма строк
подскажите как сделать так, чтобы считало строки и выводило их сумму у меня не получается #include &lt;iostream&gt; #include...

Двумерный массив. Найти сумму элементов нечетных строк и произведение элементов четных строк
помогите пожалуйста Задан двумерный массив A(K,N). Найти сумму элементов нечетных строк и произведение элементов четных строк. Буду...

8
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.04.2011, 12:56
Начнём с того, что ты неправильно выбрал раздел: ты пишешь в NET, а это бейсик.
Потому не все коды будут работать. В частности вывод в листбокс отличаетя.
На форму тоже нельзя вывести просто как в бейсике.
В бейсике можно вывести в пикчур так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit
Dim T
Private Sub Комманда1_Click()
Dim i, j As Integer
Dim yy As String
Dim ss As String
Dim L As Byte
Dim K As Byte
Dim M()
Dim MAX
Dim MIN
Dim Nmax
Dim Nmin
Dim SUM
 
Randomize
ss = InputBox("Ввведите размеры массива через запятую", 32, Int(5 * Rnd + 5) & "," & Int(5 * Rnd + 5))
K = Val(Split(ss, ",")(0))
L = Val(Split(ss, ",")(0))
ReDim M(1 To K, 1 To L)
MAX = 0
MIN = 100
Рисунок1.Cls
Рисунок1.Print "Исходная матрица"
For i = 1 To K
        For j = 1 To L
                M(i, j) = Int(90 * Rnd + 10)
                If MAX < M(i, j) Then MAX = M(i, j): Nmax = i
                If MIN > M(i, j) Then MIN = M(i, j): Nmin = i
                Рисунок1.Print M(i, j);
        Next j
        Рисунок1.Print
        Next i
 
Рисунок1.Print
SUM = 0
Рисунок1.Print "Строка с максимальным элементом № " & Nmax & "MAX = " & MAX
For j = 1 To L
Рисунок1.Print M(Nmax, j);
SUM = SUM + M(Nmax, j)
Next j
Рисунок1.Print "Сумма элементов строки:  " & SUM
 
Рисунок1.Print
SUM = 0
Рисунок1.Print "Строка с минимальным элементом № " & Nmin & "MIN = " & MIN
For j = 1 To L
Рисунок1.Print M(Nmin, j);
SUM = SUM + M(Nmin, j)
Next j
Рисунок1.Print "Сумма элементов строки:  " & SUM
 
End Sub
Так что переделай строки с Рисунок1.Print под вывод в листбокс
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 10
25.04.2011, 13:03  [ТС]
Ну, в целом, все понял, кроме одного. Самого первого с выбором раздела. Я пишу в NET? Мне просто казалось, что пишу я именно в Visual Basic'е, используя Microsoft Visual Studio 2010 - или VB это и есть NET? Я кажется, даже в таком банальном путаюсь.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.04.2011, 13:22
начиная с 2005 - всё NET

Добавлено через 1 минуту
ListBox4.Items.Add(max) Так в NET
ListBox4.AddItem Так в бейсике

Добавлено через 15 минут
Можно так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Option Explicit On
Public Class Form1
    Dim T
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i, j As Integer
        Dim ss As String
        Dim L As Byte
        Dim K As Byte
        Dim M(,)
        Dim MAX
        Dim MIN
        Dim Nmax
        Dim Nmin
        Dim SUM
        ListBox1.Items.Clear()
        Randomize()
        ss = InputBox("Ввведите размеры массива через запятую", 32, Int(5 * Rnd() + 5) & "," & Int(5 * Rnd() + 5))
        K = Val(Split(ss, ",")(0))
        L = Val(Split(ss, ",")(0))
        ReDim M(K - 1, L - 1)
        MAX = 0
        MIN = 100
 
        ListBox1.Items.Add("Исходная матрица")
        ss = ""
        For i = 0 To K - 1
            For j = 0 To L - 1
                M(i, j) = Int(90 * Rnd() + 10)
                If MAX < M(i, j) Then MAX = M(i, j) : Nmax = i
                If MIN > M(i, j) Then MIN = M(i, j) : Nmin = i
                ss = ss & "  " & (M(i, j))
            Next j
            ListBox1.Items.Add(ss)
            ss = ""
        Next i
        ListBox1.Items.Add("  ")
        ss = ""
        SUM = 0
        ListBox1.Items.Add("Строка с максимальным элементом № " & Nmax & ": MAX = " & MAX+1)
        For j = 0 To L - 1
            ss = ss & "  " & M(Nmax, j)
            SUM = SUM + M(Nmax, j)
        Next
        ListBox1.Items.Add(ss)
        ListBox1.Items.Add("Сумма элементов строки:  " & SUM)
        ListBox1.Items.Add("  ")
 
        ss = ""
        SUM = 0
        ListBox1.Items.Add("Строка с минимальным элементом № " & Nmin & ": MIN = " & MIN+1)
        For j = 0 To L - 1
            ss = ss & "  " & M(Nmin, j)
            SUM = SUM + M(Nmin, j)
        Next j
        ListBox1.Items.Add(ss)
        ListBox1.Items.Add("Сумма элементов строки:  " & SUM)
    End Sub
End Class
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 10
25.04.2011, 13:23  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
начиная с 2005 - всё NET
А, понял. Спасибо за разъяснение. Вечером попробую, в общем, привести код к своему "детищу".
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 10
25.04.2011, 19:57  [ТС]
Все оказалось несколько проще. Коллективным разумом получилось доехать до такого кода, причем полностью и правильно работающего:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub PoiskMaxSumm(ByVal n(,) As Single, ByVal k As Integer, ByVal l As Integer)
Dim i, j, str As Integer
Dim sum As Single
Dim max As Single = -2147483648
Dim yy As String = " "
Dim ss As String = " "
For i = 0 To k
For j = 0 To l
sum = sum + n(i, j)
Next
If sum > max Then
max = sum
str = i
End If
sum = 0
Next
For i = 0 To l
If n(str, i) < 0 Then ss = Space(2) Else ss = Space(3)
yy = yy + Format(n(str, i), "00") + ss
Next
ListBox2.Items.Add(yy)
ListBox4.Items.Add(max)
End Sub
Но все равно спасибо за помощь!
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.04.2011, 20:04
Vakulav,
Аты уверен?
Задание - найти строки с максимальной и минимальной суммой элементов
Я что-то невнимательно прочитал задание и искал строки с максимальным и минимальным элементом, а не с масимальной суммой.
Но в последнем коде минимальная сумма не ищется!
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 10
25.04.2011, 20:10  [ТС]
Уверен. Это процедура для поиска максимальной, для минимальной отдельно такая же, с парой мельчайших изменений, а сумма элементов строки осуществляется тут:

VB.NET
1
2
3
4
For i = 0 To k
For j = 0 To l
sum = sum + n(i, j)
...
и затем с получившимся результатом происходят все действия, связанные с максимума и минимумами, сравнения и т.д.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.04.2011, 20:32
Тогда должна быть ущё одна процедура - поис миниума
Только зачем плодить процедуры если можно в одном цикле наити и макс и мин?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2011, 20:32
Помогаю со студенческими работами здесь

Двумерный массив: сумма строк, максимумы столбцов
в двумерном массиве посчитать сумму строк и записать эти суммы в отдельный массив. Посчитать максимальный элементы в каждом столбце в с++

Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов, сумма элементов в которых
решите плз

Двумерный массив и сумма элементов
Всем доброго времени суток, требуется помощь с домашним заданием: Написать программу, которая вводит по строкам с клавиатуры двумерный...

Двумерный массив. Сумма элементов.
Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух...

Двумерный массив. Сумма элементов
Дан двухмерный массив. Составить программу расчета суммы двух любых элементов второго столбца массива.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru