При отладке всё окей. При вводе n = 1 тоже всё окей, но при n>1 повреждается куча
Цикл заполняет и тут же редактирует массив. По ходу дела подсчитывает изменения (Counter0 и Counter3) и выводит их. Если ввести n = 1 то всё работает как надо, но если оказывется, что n >= 2, то выходит ошибка: "Необработанное исключение по адресу 0x00007FFFAEA0F199 (ntdll.dll) в Laba.exe: 0xC0000374: Куча была повреждена (параметры: 0x00007FFFAEA777F0)." подскажите, пожалуйста, что в коде не так
int n = 0, minute, i = 0, x = 0;
std::cout << " Enter number of hours of combat: ";
std::cin >> n;
minute = n * 60;
int* battle = new int[minute];
long Counter3 = 0, Counter0 = 0, Counter1 = 0;
for (i; i < minute + 4; i++)
{
battle[i] = 1;
if (i % 2 == 1)
{
x = 1 + rand() % 100;
if (x > 10) battle[i - 2] = 0;
Counter0 = Counter0 + 1;
}
if (i >= 3 and i < minute)
{
if (battle[i - 4] == 1) {
battle[i - 4] = 3;
Counter3 = Counter3 + 1;
}
}
}
std::cout << "Result of Battle: \n";
std::cout << "Target destoyed - " << Counter0 << "\n";
std::cout << "Target missed - " << Counter3 << "\n";
std::cout << "Target under fire - 2" << "\n";
Ответы (1 шт):
Автор решения: vlad9i2
→ Ссылка
Вы создаёте массив длиной minute, а потом в цикле пытаетесь присвоить значения по индексам minute, minute +1 ,minute + 2, minute + 3, веротяно из-за этого и исключения.