С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
PaTRuOoT
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 4
1

Индекс находится все границ массива при нахождении среднего арифметического его элементов

22.11.2014, 21:26. Просмотров 1040. Ответов 7
Метки нет (Все метки)

Помогите исправить ошибку, создаю программу в которой создаешь A массив из N элементов, и находишь среднее арифметеческое и геометрическое .
Когда начинаю заполнять массив выскакивает эта ошибка в 9 строке
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
Public Class Form1
    Dim N As Integer
    Dim SrG, SrA As Double
    Dim A(N) As String
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' Заполнение массива
        N = Val(TextBox1.Text)
        For i As Integer = 1 To N
            A(i) = InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры")
            ListBox1.Items.Add(A(i))
        Next i
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SrA = 0
        For i As Integer = 1 To N
            SrA = SrA + A(i)
        Next i
        SrA = SrA / N
        Label2.Text = SrA
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SrG = 1
        For i As Integer = 1 To N
            SrG = SrG * A(i)
        Next i
        SrG = Math.Sqrt(SrG ^ (1 / N))
        Label3.Text = SrG
    End Sub
End Class
Добавлено через 19 минут
Если делаю так, то ошибка пропадает, но пишет что переменная A(i) в строках 16 и 24 не объявлена.
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
Public Class Form1
    Dim N As Integer
    Dim SrG, SrA As Double
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' Заполнение массива
        N = Val(TextBox1.Text)
        Dim A(N) As String
        For i As Integer = 1 To N
            A(i) = InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры")
            ListBox1.Items.Add(A(i))
        Next i
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SrA = 0
        For i As Integer = 1 To N
            SrA = SrA + A(i)
        Next i
        SrA = SrA / N
        Label2.Text = SrA
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SrG = 1
        For i As Integer = 1 To N
            SrG = SrG * A(i)
        Next i
        SrG = Math.Sqrt(SrG ^ (1 / N))
        Label3.Text = SrG
    End Sub
End Class
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2014, 21:26
Ответы с готовыми решениями:

Индекс вне границ массива при дешифровке данных
И снова здравствуйте! На форуме Памирыч выкладывал код программы для...

Ошибка "Индекс вне границ массива" при остановке процесса
Добрый день. Есть форма на ней кнопка, при нажатии на кнопку должен...

Массивы. Сумма среднего геометрического значения элементов и среднего арифметического значения элементов
Доброго времени суток! Прошу помощи с задачей про массивы: Даны массивы А(5)...

Найти максимальный среди отрицательных элементов массива Х и его индекс
А) Найти максимальный среди отрицательных элементов массива Х и его индекс....

Индекс находится вне границы массива
"Индекс находится вне границы массива" как исправить?

7
Монфрид
1212 / 1022 / 293
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
22.11.2014, 21:58 2
или A(i), или Str(i) равно nothing
0
PaTRuOoT
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 4
22.11.2014, 22:29  [ТС] 3
Подскажи пожалуйста как исправить.
0
Visualist
51 / 51 / 25
Регистрация: 01.02.2014
Сообщений: 201
22.11.2014, 22:51 4
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
Dim N As Integer
    Dim SrG, SrA As Double
    Dim A(N) As String
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' Заполнение массива
        N = Val(TextBox1.Text)
        Dim b(N) As String
        For i As Integer = 1 To N
            b(i) = InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры")
            ListBox1.Items.Add(b(i))
        Next i
        A = b
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SrA = 0
        For i As Integer = 1 To N
            SrA = SrA + A(i)
        Next i
        SrA = SrA / N
        Label2.Text = SrA
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SrG = 1
        For i As Integer = 1 To N
            SrG = SrG * A(i)
        Next i
        SrG = Math.Sqrt(SrG ^ (1 / N))
        Label3.Text = SrG
    End Sub
Добавлено через 7 минут
а лучше так:
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
Dim N As Integer
    Dim SrG, SrA As Double
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        N = Val(TextBox1.Text)
        For i As Integer = 1 To N
            ListBox1.Items.Add(InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры"))
        Next i
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SrA = 0
        For Each El In ListBox1.Items
            SrA += El
        Next El
        SrA = SrA / N
        Label2.Text = SrA
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SrG = 1
        For Each El In ListBox1.Items
            SrG *= El
        Next El
        SrG = Math.Sqrt(SrG ^ (1 / N))
        Label3.Text = SrG
    End Sub
1
PaTRuOoT
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 4
22.11.2014, 23:10  [ТС] 5
Спасибо большое))
0
ovva
2562 / 2109 / 519
Регистрация: 02.02.2013
Сообщений: 1,982
Записей в блоге: 2
23.11.2014, 12:53 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Причины ошибок.
По коду 1:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Class Form1
    Dim N As Integer
    Dim SrG, SrA As Double
    Dim A(N) As String   '?????? на этот момент N=0
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' Заполнение массива
        N = Val(TextBox1.Text)
        For i As Integer = 1 To N
            A(i) = InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры")
            ListBox1.Items.Add(A(i))
        Next i
    End Sub.
Вы объявили общий массив А(0) поэтому при обращении к элементам А(1), А(2),… и возникает ошибка.
По коду 2:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Class Form1
    Dim N As Integer
    Dim SrG, SrA As Double
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' Заполнение массива
        N = Val(TextBox1.Text)
        Dim A(N) As String
        For i As Integer = 1 To N
            A(i) = InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры")
            ListBox1.Items.Add(A(i))
        Next i
    End Sub.
Массив А(N) объявлен как локальный (виден только в той процедуре где объявлен) поэтому обращение к нему в других процедурах вызывает ошибку.
1
PaTRuOoT
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 4
23.11.2014, 13:18  [ТС] 7
Цитата Сообщение от ovva Посмотреть сообщение
Массив А(N) объявлен как локальный
а как сделать его не локальным? потому что если объявлять его как в коде 1, то он не знает чему равно N, а "N = Val(TextBox1.Text) " туда не вставляется.
0
ovva
2562 / 2109 / 519
Регистрация: 02.02.2013
Сообщений: 1,982
Записей в блоге: 2
23.11.2014, 13:54 8
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
    Dim N As Integer
    Dim SrG, SrA As Double
    Dim A() As String          '!!!!!!!!!!!!!!!!!!!!
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ' Заполнение массива
        N = Val(TextBox1.Text)
        reDim A(N)         '!!!!!!!!!!!!!!!!!!!!
        For i As Integer = 1 To N
            A(i) = InputBox("Введите " + Str(i) + " элемент массива:", "Ввод элементов массива с клавиатуры")
            ListBox1.Items.Add(A(i))
        Next i
    End Sub.
1
23.11.2014, 13:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2014, 13:54

Генерирование QR Code Индекс находится все границ массива
При генерировании QR Code больше 109 символов ругается на "Индекс находится все...

Заменить все элементы массива, меньшие среднего арифметического, значением среднего арифметического
В одномерном массиве целых чисел заменить все элементы, меньшие среднего...

Количество элементов массива, больших среднего арифметического всех его элементов
Нужно Составить программу определения количества элементов массива, больших...


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

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

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