Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
PaTRuOoT
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 4
#1

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

22.11.2014, 21:26. Просмотров 504. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Индекс находится все границ массива при нахождении среднего арифметического его элементов (Visual Basic .NET):

.NET 4.x Индекс вне границ массива при дешифровке данных - Visual Basic .NET
И снова здравствуйте! На форуме Памирыч выкладывал код программы для тестирования, я немного его переработал. Необходимо прикрутить...

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

Массивы. Сумма среднего геометрического значения элементов и среднего арифметического значения элементов - Visual Basic .NET
Доброго времени суток! Прошу помощи с задачей про массивы: Даны массивы А(5) и В(5), состоящие из положительных элементов. Найти...

Найти максимальный среди отрицательных элементов массива Х и его индекс - Visual Basic .NET
А) Найти максимальный среди отрицательных элементов массива Х и его индекс. Элементы массива формируются по правилу: х1=0.2 ; xi= cos (П х...

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

Генерирование QR Code Индекс находится все границ массива - C#
При генерировании QR Code больше 109 символов ругается на "Индекс находится все границ массива" private void button5_Click(object...

7
Монфрид
1208 / 1018 / 154
Регистрация: 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 / 24
Регистрация: 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
2153 / 1857 / 460
Регистрация: 02.02.2013
Сообщений: 1,732
Записей в блоге: 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
2153 / 1857 / 460
Регистрация: 02.02.2013
Сообщений: 1,732
Записей в блоге: 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
Привет! Вот еще темы с ответами:

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

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

Найти количество элементов массива, больших среднего арифметического всех его элементов - Delphi
Задан массив A из n элементов. Найти количество элементов этого массива, больших среднего арифметического всех его элементов.

Найти количество элементов массива, больших среднего арифметического всех его элементов - Turbo Pascal
дан одномерный массив из 10 чисел. нужно найти кол-во элементов массива, больших среднего арифметического всех его элементов


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

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

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