нарушение доступа для чтения. 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. Читайте про оператор "запятая".