Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523

Массив: Проверка массива на выход за его пределы...

14.03.2019, 11:32. Показов 1211. Ответов 13

Студворк — интернет-сервис помощи студентам
если есть массив и в какой-то момент расчёт выходит за его пределы
и что-бы узнать так ли это надо организовать проверку
если проверять через индекс всё работает
как сделать проверку через значение?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
 
Private Sub Form_Load()
Dim arr(10) As Integer
Dim i As Integer
 
For i = 0 To 20
   'If i > 10 Then Exit For 'работает
   If arr(i) = Null Then Exit For ' не работает
   arr(i) = i * 2
Next i
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2019, 11:32
Ответы с готовыми решениями:

Проверка на выход за пределы массива
Выделение памяти просходит через оператор new. Как включить автоматическую проверку выхода за пределы массива в Visual C++? Есть ли...

Проверка на выход на пределы массива
Напишите пожалуста пример кода как этого можна добиться в отдельной функции

Проверка на выход за пределы массива
Есть самый обычный массив int veg; вот так заполняется for (int i = 0; i < 3; i++) { cklad2 >> veg; } мне нужно...

13
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
14.03.2019, 12:53
Цитата Сообщение от Веди Посмотреть сообщение
Visual Basic
1
For i = 0 To 20

Visual Basic
1
For i = 0 To ubound(arr)
0
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523
14.03.2019, 13:11  [ТС]
извини не так сформулировал вопрос
расчёт каждый раз будет разным
размер массива тоже может быть разным
и задавать количество циклов тоже надо разное
программа должна пройти до последней существующей ячейки и запомнить индекс

Visual Basic
1
If arr(i) = Null Then s=i-1:Exit For
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
14.03.2019, 13:16
Цитата Сообщение от Веди Посмотреть сообщение
до последней существующей ячейки
Какой "последней существующей ячейки" ? Где эта ячейка находится ?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
14.03.2019, 13:28
Цитата Сообщение от Веди Посмотреть сообщение
размер массива тоже может быть разным
и задавать количество циклов тоже надо разное
Без проблем. Смотрите.
Миниатюры
Массив: Проверка массива на выход за его пределы...  
0
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523
14.03.2019, 13:36  [ТС]
1.я задаю число ходов s=2000
2.программа ищет координаты и отрабатывает
3.я задаю s =3000
4. программа - Subscript out of range (Error 9)
5. на промежутке 2001 - 3000 мне надо найти последние координаты перед вылетом
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
14.03.2019, 13:41
Цитата Сообщение от Веди Посмотреть сообщение
Subscript out of range
Так это ошибка выхода индекса массива за пределы диапазона. Зачем ждать ошибки, если границу диапазона можно определить заранее ?
0
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523
14.03.2019, 13:43  [ТС]
так я и хочу определить но для этого надо найти точку вылета
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
14.03.2019, 13:47
Может это Вам надо ? Но это говнокод
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Explicit
 
Private Sub Form_Load()
    Dim arr(10) As Integer, i As Integer, s As Integer
    
 
    For i = 0 To 1000
        On Error GoTo m
        arr(i) = i * 2
    Next i
    
m:   s = arr(i - 1)
    
End Sub
Добавлено через 58 секунд
Цитата Сообщение от Веди Посмотреть сообщение
так я и хочу определить
Ubound(arr) возвращает верхнюю границу массива.
0
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523
14.03.2019, 14:49  [ТС]
дело в том что координаты 2го массива записываются в 2 1ных массива. они фактически индексы
так что Ubound здесь не пройдёт

Добавлено через 57 минут
короче
сократил число шагов до 2-3
для быстроты
и выяснил что массив в не диапазона =0
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
14.03.2019, 20:22
Цитата Сообщение от Веди Посмотреть сообщение
расчёт каждый раз будет разным
размер массива тоже может быть разным
и задавать количество циклов тоже надо разное
программа должна пройти до последней существующей ячейки и запомнить индекс
Вот пример,если я правильно понял
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
Option Explicit
Dim Tmp As Long ' Если нужны конечные индексы
Dim Mas() As Long ' Массив
Dim Sum As Long
Const N = 1000 ' Const для цикла в пределах разумного
Sub PushBack(Arr() As Long, b As Long) 'Процедура добавления элемента в конец массива
    On Error Resume Next
    If (Not Arr) = -1 Then ReDim Arr(0) Else ReDim Preserve Arr(UBound(Arr) + 1)
    Arr(UBound(Arr)) = b 'Добавил 1 элемент
End Sub
 
Private Sub Form_Click()
Dim i As Long
'Первый цикл
For i = 0 To N
    Sum = Sum + i 'ваши вычисления (это пример)
    If Sum >= 50 Then Tmp = i - 1: Exit For ' условие выхода из цикла, у вас будут свои
    PushBack Mas, Sum 'вызов процедуры
Next
For i = LBound(Mas) To UBound(Mas) 'Печать что в массиве
    Print Mas(i);
Next
Print
Print Tmp; '  конечный индекс,если нужен
'Во втором цикле добавляем с конца массива
Sum = Mas(UBound(Mas))
For i = 0 To N
    Sum = Sum + i
    If Sum >= 150 Then Tmp = Tmp + (i - 1): Exit For
    PushBack Mas, Sum
Next
Print
For i = LBound(Mas) To UBound(Mas) 'Печать результата
    Print Mas(i);
Next
Print
Print Tmp;
End Sub
0
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523
15.03.2019, 08:15  [ТС]
Genn55, спасибо за помощь
код интересный
я нашёл решение
просто думал что за пределами массив мусор и как его определять
но за - нули а это всё облегчает
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
15.03.2019, 12:18
Цитата Сообщение от Веди Посмотреть сообщение
просто думал что за пределами массив мусор и как его определять
но за - нули а это всё облегчает
А если внутри массива нули? Тогда за пределами массива?
Смотрите Проверка массива на Nothing
0
 Аватар для Веди
18 / 13 / 1
Регистрация: 04.07.2012
Сообщений: 523
15.03.2019, 12:33  [ТС]
в моём случае массив заполняется "до горлышка"
нулей не держим
но спасибо за инфу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2019, 12:33
Помогаю со студенческими работами здесь

Выход за пределы массива при его сортировке
#include "stdafx.h" #include <time.h> #include <clocale> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR*...

Массив. Задачка. Выход за пределы массива
Доброе утро. Подскажите пожалуйста есть кусок кода. Он выводит * если елемент массива <10, если >10 то #. А если подряд 3 элемента...

При копировании массива происходит выход за его пределы (Ошибка 216)
подскажите пожалуйста почему после процедуры mas мне выдает 216 ошибку и как ее исправить ? type mass=array of integer; ...

Проверка вектора на выход за пределы
привет есть двумерный вектор. прохожу каждую строку циклом. делаю развёртку цикла std::vector<vector<int>> index{ ...

Проверка на выход за пределы строки в цикле
Здраствуйте, подскажите как в таком коде сделать проверку на выход за пределы строки? using System; namespace StrInStr { class...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru