Vector subscript out of range c как исправить

Обновлено: 07.07.2024

Почему выдает ошибку Почему выдает ошибку subscript out of range?
во всех строка где находится ActiveWorkbook.Worksheets(List).Cells(k, 2)
(не засунул под <сode>сode> т.к все русское меняет на иероглифы)

Option Base 1
Dim Ном1 As Integer, Группа1 As Integer, Ячейка As Integer
Dim Инф1 As Integer, Мат1 As Integer, ПСП1 As Integer
Dim ПТАКТ1 As Integer, Колдв As Integer
Dim Србал(1 To 4) As Currency
Public Фам1 As String
Public List As String
Public k As Integer

Private Sub Дан_Экзамен_Initialize()
k = 4
Workbooks.Add
Ном1 = ActiveWorkbook.Worksheets(List).Cells(k, 1)
Группа1 = ActiveWorkbook.Worksheets(List).Cells(k, 2)
Фам1 = ActiveWorkbook.Worksheets(List).Cells(k, 3)
Инф1 = ActiveWorkbook.Worksheets(List).Cells(k, 4)
Мат1 = ActiveWorkbook.Worksheets(List).Cells(k, 5)
ПСП1 = ActiveWorkbook.Worksheets(List).Cells(k, 6)
ПТАКТ1 = ActiveWorkbook.Worksheets(List).Cells(k, 7)
Колдв = ActiveWorkbook.Worksheets(List).Cells(k, 8)

Номер.Value = Ном1
Ввод_Фам.Value = Фам1
Ввод_Группа.Value = Группа1
Выбор_оценка.Value = Инф1
Выбор_Оценка1.Value = Мат1
Выбор_Оценка2.Value = ПСП1
Выбор_Оценка3.Value = ПТАКТ1
Ввод_дв.Value = Колдв
For j = 1 To 4
Србал(j) = ActiveWorkbook.Worksheets(List).Cells(14, j + 3)
Next j
Вывод_ср1.Value = Србал(1)
Вывод_ср2.Value = Србал(2)
Вывод_ср3.Value = Србал(3)
Вывод_ср4.Value = Србал(4)

Выбор_оценка.RowSource = "k5:k8"
Выбор_Оценка1.RowSource = "k5:k8"
Выбор_Оценка2.RowSource = "k5:k8"
Выбор_Оценка3.RowSource = "k5:k8"
End Sub

Private Sub Выбор_Оценка_Change()
Инф1 = Выбор_оценка.Value
End Sub

Private Sub Выбор_Оценка1_Change()
Мат1 = Выбор_Оценка1.Value
End Sub

Private Sub Выбор_Оценка2_Change()
ПСП1 = Выбор_Оценка2.Value
End Sub

Private Sub Выбор_Оценка3_Change()
ПТАКТ1 = Выбор_Оценка3.Value
End Sub

Private Sub Кн_Ввод_Click()
ActiveWorkbook.Worksheets(List).Cells(k, 4) = Инф1
ActiveWorkbook.Worksheets(List).Cells(k, 5) = Мат1
ActiveWorkbook.Worksheets(List).Cells(k, 6) = ПСП1
ActiveWorkbook.Worksheets(List).Cells(k, 7) = ПТАКТ1

For i = 4 To 7
If ActiveWorkbook.Worksheets(List).Cells(k, i) = 2 Then Колдв = Колдв + 1
Next i

ActiveWorkbook.Worksheets(List).Cells(k, 8) = Колдв
Ввод_дв.Value = Колдв

For j = 1 To 4
Србал(j) = 0
For M = 4 To 13
Србал(j) = Србал(j) + ActiveWorkbook.Worksheets(List).Cells(M, j + 3)
Next M
Србал(j) = Србал(j) / 10
ActiveWorkbook.Worksheets(List).Cells(14, j + 3) = Србал(j)
Next j
Вывод_ср1.Value = Србал(1)
Вывод_ср2.Value = Србал(2)
Вывод_ср3.Value = Србал(3)
Вывод_ср4.Value = Србал(4)
End Sub

Private Sub Кн_Выход_Click()
Dim M As String, T As String, R As String
Dim St As String
M = "Хотите закончить работу?"
St = vbYesNo + vbCritical + vbDefaultButton2
T = "Выход из программы!"
R = MsgBox(M, St, T)
If R = vbYes Then
Unload Me
End If
End Sub

Private Sub Кн_Редактировать_Click()
Номер.Enabled = True
Ввод_Фам.Enabled = True
Выбор_оценка.Enabled = True
Выбор_Оценка3.Enabled = True
Выбор_Оценка1.Enabled = True
Выбор_Оценка2.Enabled = True
Ввод_Группа.Enabled = True
End Sub

Private Sub Счет_SpinDown()
Номер.Enabled = False
Ввод_Фам.Enabled = False
Выбор_оценка.Enabled = False
Выбор_Оценка3.Enabled = False
Выбор_Оценка1.Enabled = False
Выбор_Оценка2.Enabled = False
Ввод_Группа.Enabled = False

If k > 4 Then k = k + 1
Ном1 = ActiveWorkbook.Worksheets(List).Cells(k, 1)
Группа1 = ActiveWorkbook.Worksheets(List).Cells(k, 2)
Фам1 = ActiveWorkbook.Worksheets(List).Cells(k, 3)
Инф1 = ActiveWorkbook.Worksheets(List).Cells(k, 4)
Мат1 = ActiveWorkbook.Worksheets(List).Cells(k, 5)
ПСП1 = ActiveWorkbook.Worksheets(List).Cells(k, 6)
ПТАКТ1 = ActiveWorkbook.Worksheets(List).Cells(k, 7)
Колдв = ActiveWorkbook.Worksheets(List).Cells(k, 8)
Номер.Value = Ном1
Ввод_Фам.Value = Фам1
Ввод_Группа.Value = Группа1
Выбор_оценка.Value = Инф1
Выбор_Оценка1.Value = Мат1
Выбор_Оценка2.Value = ПСП1
Выбор_Оценка3.Value = ПТАКТ1
Ввод_дв.Value = Колдв
End Sub

Private Sub Счет_SpinUp()
Номер.Enabled = False
Ввод_Фам.Enabled = False
Выбор_оценка.Enabled = False
Выбор_Оценка3.Enabled = False
Выбор_Оценка1.Enabled = False
Выбор_Оценка2.Enabled = False
Ввод_Группа.Enabled = False

Ошибка: Vector subscript out of range

Ошибка vector subscript out of range
Ошибка: vector subscript out of range Подскажите, пожалуйста, где ошибка и как решить. Я.

Ошибка vector subscript out of range
Всем корректного. Читаю Страуструпа. В конце главы есть задание: в первый вектор вводятся люди(их.

Ошибка vector subscript out of range
Пишет &quot;vector subscript out of range&quot; Смысл этой задачи найти число с максимальной суммой.

Где, собственно, Vector? В какой строке кода возникает ошибка?

Добавлено через 3 минуты
В 21 строке, зачем:

Добавлено через 1 минуту
i++ для того что мы уже использовали два элемента из массива indexiesMass под индексами 0 и 1, нужно двигаться дальше, но это только при первой итерации

Я не умею им пользоваться, я влючал visual studio он открывает не мой код, а другой, там указывает на какую-то строку, но даже непонятно что она делает

Вектор используется в методе, но я же говорю, при использовании метода вне цикла все нормально проходит, вот метод:

Явно ли, неявно ли, в вашем коде используется std::vector. Ошибка идет именно из него.

Раз вы не умеете пользоваться отладчиком, с чего вы взяли, что ошибка вылетает именно из того кода, который вы привели?

Вектор используется в методе, но я же говорю, при использовании метода вне цикла все нормально проходит, вот метод: Проверяйте индексы, при обращении к векторам, и размер векторов. Где-то, при таком обращении, происходит выход за размер вектора. Главное первые пять итераций он проходит, ссылку давал выше на скрин, и после этого ошибка Главное первые пять итераций он проходит, ссылку давал выше на скрин, и после этого ошибка Это не главное, и ни о чём не говорит. Отладчик в руки, и вперёд.

Ошибка в криворуко реализованном методе 'polynomMultiply'. Вы видите, с чего он начинается

Эта формула призвана вычислять степень полинома 'newPolynom'. Каждый член полинома задается парой чисел ("степень A" и "степень X") разделенных пробелами. Формула выше будет работать "правильно" только если все степени в представлении полинома - однозначные числа. Вы же смело пихаете в свои входные полиномы более высокие степени (в частности, двухзначные). Эта формула сразу начинает тупо врать в такой ситуации. Она завышает степень полинома, что и приводит к вылету за пределы массива в цикле

Ошибка “vector subscript out of range” в цикле

код[1]

При компиляции (1) выдает (2). Что делать? Как бороться?



15.5k 7 7 золотых знаков 48 48 серебряных знаков 91 91 бронзовый знак

Вы не можете применять оператор индексирования к вектору, который еще не имеет элементов.

Поэтому вам следует написать перед циклами

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

44k 3 3 золотых знака 35 35 серебряных знаков 86 86 бронзовых знаков

Как вариант инициализации (при создании можешь размерность указать):



Hi everyone, I have been stuck with this problem for the past two hours. The program asks the user for the names and values of their cars, stores them in tokens, and then puts the tokens into a vector. Then it prints out what the user entered. This program compiles and works up until the last part, at line 36. I don't know if anything is wrong with the for loop. Everything prints out fine, but I get a "Debug Assertation Failed!" error at line 1234. Expression: vector subscript out of range. Is there something I'm missing here? I don't know what's wrong. Thanks for your help and time.


Figured it out literally 10 minutes later. The for loop should be

for (size_t i = 0; i < things.size(); ++i)

instead of what it is now. This is because cars.size() is not an int , instead it is size_t , which equals some usual "unsigned" type.


The problem had nothing to do with the type. The problem was that valid indices in a vector fall into the range 0 to vectorSize - 1. By changing i <= cars.size() to i < cars.size() you stop yourself from trying to use cars.size() as an index (which is beyond the valid range of indices).


Wow, I tried that earlier, and it didn't work, but now it suddenly does. Thanks, I was going crazy

Читайте также: