Полный текст задания: Даны два массива А и И одинакового размера N. Определить функцию, возвращающую новый массив С того же размера, каждый элемент которого равен сумме элементов массивов А и В с тем же индексом. Исходные массивы передаются в функцию в качестве параметров.
Я сделал это следующим образом:
#include <iostream>
using namespace std;
int *printarray(int A[], int B[],const int N,int *C)
{
C = new int[N];
for (int i = 0; i < N; ++i) {
C[i] = A[i] + B[i];
}
return C;
}
int main()
{
int N;
setlocale(0, "rus");
cout << "Введите размер массива: " << endl;
cin >> N;
cout << "Заполните числами массив А:" << endl;
int* A = new int[N];
for (int i = 0; i < N; ++i) {
cin >> A[i];
}
cout << "Заполните числами массив В: " << endl;
int* B = new int[N];
for (int i = 0; i < N; ++i) {
cin >> B[i];
}
int* C= new int;
cout << "Новый массив С: " << endl;
int *Y=printarray(A,B,N,C);
for (int i = 0; i < N; i++)
{
cout << Y[i] << endl;
}
delete Y;
delete A;
delete B;
delete C;
system("pause");
return 0;
}
Программа работает, но преподаватель говорит, что массив С всё равно не удалён. Я уже по-разному пробовал его удалить, но всё бес толку. Помогите разобраться. заранее спасибо.
Вы пишете:
int* C= new int;
Дальше этот обьект нигде не удаляется, так как ваш указатель после вызова функции указывает на массив. После этого вы не массивы удаляете, а только их первые элементы. Одним словом, нужно просто обьявить С*
(можете инициализировать нулем и удалить весь массив. Я бы сказал, что этот указатель вовсе и не нужен, как и не нужен последный аргумент вашей функции. Ведь она всеравно возвращает указатель на массив:
int *printarray(int A[], int B[],const int N)
{
int* C = new int[N];
for (int i = 0; i < N; ++i)
C[i] = A[i] + B[i];
return C;
}
//непонятно почему вы функцию так назвали...
int main() {
//...
int *Y=printarray(A,B,N);
for (int i = 0; i < N; i++)
{
cout << Y[i] << endl;
}
delete []Y;
delete []A;
delete []B;
//...
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Накопал в интернете разные коды на C++:
Подскажите, пожалуйста, законно ли использование спецификатора volatile для локального обхода требований строгих псевдонимов?
Почему Catch2 не логирует сообщения? В пустом TEST_CASE пишу INFO("42");После запуска в консоли получаю: