Исключение только что привело к тому, что мой код прекратил отладку и показывал простой оператор - PullRequest
0 голосов
/ 21 апреля 2020

Пожалуйста, кто-нибудь может сказать мне, что не так в этом коде. Я понятия не имею о подобных исключениях. Компилятор только показывает это - Исключение: нарушение прав чтения. a было 0x1D54112. Произошло ли это из-за оператора if внутри al oop, который также находится внутри другого l oop ?? Вот код -

#include<iostream>

using namespace std;

int main()
{
    int n;
    cout << "Enter the number of walkers - ";
    cin >> n;
    int* a = new int[n];
    cout << endl << "Enter the distances of walkers from Rick : ";
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    int temp;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - 1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    cout << endl << "The distance of walkers from Rick are - ";
    for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
    }
    int c = 0, i = 0, k = 0;
    while (c == 0 || i < n)
    {
        a[i] = 0;         //exception is being shown here.
        for (int j = i+1; j < n; j++)
        {
            a[j] -= 1;    //and here too!!.
            if (j % 6 == 0) a[j]--;
            if (a[j] == 0)
            {
                c = 1;
                k = j;
            }
        }
        i++;
    }
    if (c == 0) cout << endl << "Rick now go and save Carl and Judas" << endl;
    else if (c == 1)
    {
        cout << endl << "Goodbye Rick" << endl;
        cout << "He was able to kill " << k << " walkers. " << endl;
    }
}
...