Что делать когда компилятор пишет: Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted
Недавно начал учить с++. Хотел сделать сегодня что-то наподобие мини-игры. Вроде бы всё работает корректно, но в самом конце пишет: Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RU");
cout << "Здравствуйте! Это игра Запоминайка!"<<endl;
cout << "Введите и запомните 10 чисел ,а потом их впишите в том же порядке."<<endl;
int nums[10]{};
for ( int i = 0; i <= 10; i++)
{
cout << "Введите " << (i+1) << " число>>";
cin >> nums[i];
}
int a[10]{};
int b[10]{};
for (int i = 0; i <= 10; i++)
{
cout << "Снова введите " << (i+1) << " число"<<endl;
cin >> a[i];
if (a[i] == nums[i])
{
cout << "Верно!"<<endl;
b[i] = 1;
}
else {
cout << "Неверно"<<endl;
b[i] = 0;
}
}
int tog=0;
for (int i = 0; i <=10 ; i++)
{
tog += b[i];
}
if (11 / tog >= 9)
cout << "Великолепно! Продолжайте в том же духе!";
else if (11 / tog >= 7)
cout << "Прекрасно!";
else if (11 / tog >= 5)
cout << "Хорошо!";
else if (11 / tog >= 3)
cout << "Неплохо!";
else if (11 / tog >= 1)
cout << "Плоховато!";
else if (11 / tog ==0 )
cout << "Очень плохо!";
} // вот здесь ошибку выдаёт
Ответы (1 шт):
Автор решения: Тимофей
→ Ссылка
Благодарю "andreymal". Цитирую его комментарии:
-
Если Run-Time, значит это пишет уже не компилятор – andreymal
-
for ( int i = 0; i <= 10; i++)- этот цикл выполняется 11 раз, а в массиве всего 10 элементов - вы пишете за пределы массива.
Т.е., ошибка моя была в том, что я превысил количество элементов в массиве.