Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 10
1

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци

23.10.2019, 17:12. Просмотров 1444. Ответов 3
Метки нет (Все метки)


Есть код который создаёт матрицу в Гриде размером n на n
Следущее действие должно считать сумму в каждом ряде и выводить в текст боксы

То есть если матрицы 3 на 3 - выводит 3 результа
5 - 5 выводов

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
Dim stepen As Double = TextBox1.Text
        Dim r1 As Double = 1
        Dim r2 As Double = 1
        Dim r3 As Double = 1
        Dim r4 As Double = 1
        Dim r5 As Double = 1
        Dim q1 As Double = 1
        Dim q2 As Double = 1
        Dim q3 As Double = 1
        Dim q4 As Double = 1
        Dim q5 As Double = 1
        Dim c As Integer = 1
        Dim k As Integer = 1
        For i = 0 To DataGridView1.Rows.Count - 1
                If c <= TextBox1.Text Then
                    r1 *= DataGridView1.Item(i, 0).Value
                    q1 = r1 ^ (1 / stepen)
                    u1.Text = Math.Round(q1, 3)
                    k = c + 1
                End If
            Next
        For i = 0 To DataGridView1.Rows.Count - 1
            If k <= TextBox1.Text Then
                r2 *= DataGridView1.Item(i, 1).Value
                q2 = r2 ^ (1 / stepen)
                u2.Text = Math.Round(q2, 3)
                c = k + 1
            End If
        Next
        For i = 0 To DataGridView1.Rows.Count - 1
            If c <= TextBox1.Text Then
                r3 *= DataGridView1.Item(i, 2).Value
                q3 = r3 ^ (1 / stepen)
                u3.Text = Math.Round(q3, 3)
                k = c + 1
            End If
        Next
        For i = 0 To DataGridView1.Rows.Count - 1
            If k <= TextBox1.Text Then
                r4 *= DataGridView1.Item(i, 3).Value
                q4 = r4 ^ (1 / stepen)
 
                u4.Text = Math.Round(q4, 3)
                c = k + 1
            End If
        Next
        For i = 0 To DataGridView1.Rows.Count - 1
            If c <= TextBox1.Text Then
                r5 *= DataGridView1.Item(i, 4).Value
                q5 = r5 ^ (1 / stepen)
 
                u5.Text = Math.Round(q5, 3)
                k = c + 1
            End If
        Next
    End Sub
Когда ввожу размер матрицы 5 на 5 ( То есть используются максимальное количество строк и рядов ) - Всё считает отлично и выводит также !

Только ввожу любое значение меньше <5
Допустим ( 3)
Выводит ошибку со ссылкой на код :
r4 *= DataGridView1.Item(i, 3).ValueТекст ошибки : System.ArgumentOutOfRangeException: "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index"


Подскажите , если не сложно, программирую для универа за закрытие долгов )
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2019, 17:12
Ответы с готовыми решениями:

Что делать если vb.net выдает ошибку "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его раз"
Выдает ошибку вот такой код, в checklistbox надо поместить все значения из списка list, но при...

DataGridView: Индекс за пределами диапазона
Выручайте, друзья... Есть кусок кода: Private Sub...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Здравствуйте, в Windows Forms (Visual studio 2017) выдаёт ошибку : &quot;Индекс за пределами диапазона....

3
Лень — мое второе и
2959 / 2189 / 638
Регистрация: 28.11.2014
Сообщений: 3,343
Записей в блоге: 2
23.10.2019, 17:48 2
XioLink, Сумму? У вас тут что-то со степенями и как оно вообще считает, если вы делаете цикл по строкам, а обращаетесь к столбцам?
Вот для примера
vb.net
1
2
3
4
5
6
7
8
   Dim stepen As Double = TextBox1.Text
            For i = 0 To DataGridView1.Rows.Count - 1
                Dim R As Double = 1
                For j = 0 To DataGridView1.Columns.Count - 1
                    R *= DataGridView1.Item(j, i).Value
                Next
                 ListBox1.Items.Add("Ряд " & i + 1 & ": " & Math.Round(R ^ (1 / stepen), 3))
            Next
1
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 10
23.10.2019, 17:50  [ТС] 3
Перепутал в написании ....
Сложение чисел, оно считает правильно только когда используются все индексы грида
Если 3 из 5 - то выдаёт ошибку , с кодом всё ок, проблема именно с построением наверно условия когда что выполняется
0
3608 / 2926 / 704
Регистрация: 02.02.2013
Сообщений: 2,812
Записей в блоге: 2
23.10.2019, 18:21 4
Лучший ответ Сообщение было отмечено XioLink как решение

Решение

XioLink, пример
Кликните здесь для просмотра всего текста
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
24
25
26
27
28
29
30
31
32
Private n As Integer
Private Sub Create_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim rnd As New Random
    n = NumericUpDown1.Value
    With DataGridView1
        .Columns.Clear()
        .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
        For j = 0 To n - 1
            .Columns.Add("Col" & (j + 1).ToString, (j + 1).ToString)
        Next
        .RowCount = n
        .RowHeadersVisible = True
        .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
        For i = 0 To n - 1
            .Rows(i).HeaderCell.Value = (i + 1).ToString
            For j = 0 To n - 1
                .Rows(i).Cells(j).Value = Format(rnd.NextDouble * 100, "0.00")
            Next
        Next
    End With
End Sub
Private Sub Calculate_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    TextBox1.Clear()
    Dim s As Double
    For i = 0 To n - 1
        s = 0
        For j = 0 To n - 1
            s += DataGridView1.Rows(i).Cells(j).Value
        Next
        TextBox1.AppendText(s.ToString & vbCrLf)
    Next
End Sub
1
Миниатюры
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2019, 18:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекци
Доброго времени суток. Есть проект, который взаимодействует с Excel. При нажатии на кнопку я...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
int id = 0; id = groups; Ошибка. Индекс за пределами диапазона. Индекс должен быть...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
Вот такая ошибка возникла - Как её исправить ?

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
Ребят, в общем вылазиет эта ошибка( Индекс за пределами диапазона. Индекс должен быть положительным...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.