Что делать когда компилятор пишет: 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". Цитирую его комментарии:

  1. Если Run-Time, значит это пишет уже не компилятор – andreymal

  2. for ( int i = 0; i <= 10; i++) - этот цикл выполняется 11 раз, а в массиве всего 10 элементов - вы пишете за пределы массива.

Т.е., ошибка моя была в том, что я превысил количество элементов в массиве.

→ Ссылка