нарушение доступа для чтения. this->**_Facptr** было 0x1EB

#include <iostream>
#include <stdlib.h>
using namespace std;

void arrrand(int A[], int B[], int C[]) 
{
    int i = 0;
    for (i == 0; i < 20; i++)
    {
        *(A + i) = rand();
    }
    for (i == 0; i < 10; i++)
    {
        *(B + i) = rand();
    }
    for (i == 0; i < 15; i++)
    {
        *(C + i) = rand();
    }
}

void vivod(int A[], int B[], int C[]) 
{
    int i = 0;
    for (i == 0; i < 20; i++)
    {
        cout << *(A + i) << " ";
    }
    for (i == 0; i < 10; i++)
    {
        cout << *(B + i) << " ";
    }
    for (i == 0; i < 15; i++)
    {
        cout << *(C + i) << " ";
    }
}

int podryadnuli(int A[], int B[], int C[]) 
{
    int i = 0, a = 0, b = 0, c = 0;
    for (i == 1; i < 19; i++) 
    {
        if ((A[i] == A[i - 1]) and (A[i] == 0))
        {
            a++;
        }
    }
    for (i == 1; i < 9; i++)
    {
        if ((B[i] == B[i - 1]) and (B[i] == 0))
        {
            b++;
        }
    }
    for (i == 1; i < 14; i++)
    {
        if ((C[i] == C[i - 1]) and (C[i] == 0))
        {
            c++;
        }
    }
    return a, b, c;
}

int main()
{
    int *A = new int(20);
    int *B = new int(10);
    int *C = new int(15);
    arrrand(A, B, C);
    vivod(A, B, C);
    cout << "\n" << podryadnuli(A, B, C);
}

Ответы (1 шт):

Автор решения: Harry

Забавная конструкция

for (i == 0; i < 20; i++)

Т.е. i не обнуляется, а сравнивается с нулем? И обеспечивает выход за границы... ой, не массива, а единственного int, потому что

int *A = new int(20);

выделяет один int со значением 20. Массив из 20 int создается так:

int *A = new int[20];

И еще...

return a, b, c;

реально возвращает только c. Читайте про оператор "запятая".

→ Ссылка