Ошибка при удалении массива
столкнулся с такой проблемой при удалении массива программа крашиться . Заранее благодарен.
#include <iostream>
#include <Windows.h>
using namespace std;
void Filling(double *Array, int size)
{
for (int i = 1; i <= size; i++)
{
cout << "Enter " << i << " element: ";
cin >> Array[i];
}
}
void Print(double *Array, int size)
{
cout << "Array printing:\n";
for (int i = 1; i <= size; i++)
cout << "[" << Array[i] << "]";
}
double* NewArray(int size)
{
double* Array = new double[size];
return Array;
}
void Work(double* rez, double* sum, double * sum1, int size) // Функция которая выполняет задание
{
for (int i = 1; i <= size; i++)
{
rez[i] = ((sum[i] + sum1[i]) / 2);
}
}
int main()
{
double a[20], b[20], c[20];
int n;
double *x, *y;
cout << "Enter n:";
cin >> n;
if (n > 20)
{
cout << "Error, number n must be less than 20. Please enter a valid number(n<=20): ";
cin >> n;
}
cout << "Working with array a:\n";
Filling(a, n);
Print(a, n);
cout << "\nWorking with array b:\n";
Filling(b, n);
Print(b, n);
cout << "\nWorking with array c:\n";
Filling(c, n);
Print(c, n);
//Создание новых массивов для выполнения задания;
x = NewArray(n);
y = NewArray(n);
//Вызов фукции выполняющая задания;
Work(x, a, b, n);
Work(y, b, c, n);
cout << "\nView of the array x after the task is completed:\n";
Print(x, n);
cout << "\nView of the array y after the task is completed:\n";
Print(y, n);
delete[]x;
delete[]y;
system("PAUSE");
return 0;
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
void Filling(double *Array, int size)
{
for (int i = 1; i <= size; i++)
{
cout << "Enter " << i << " element: ";
cin >> Array[i];
}
}
Элементы в массивах нумеруются с 0 - вот вы и выходите за границы массива и портите память! нужно
for (int i = 0; i < size; i++)
