• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Задача На Одномерные Массивы С Указателями

  • Автор темы Lizzz
  • Дата начала
L

Lizzz

Добрый день! Помогите пожалуйста найти ошибку в коде. Программа работает правильно, ответ выводит верный, но после этого выскакивает окно с сообщением об ошибке. Не пойму, в чем дело.
Вот условие задачи, ее нужно реализовать через указатели:
Переменной t присвоить значение true, если в массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными и значение false в противном случае.
А вот код моей программы:

Код:
#include <iostream>
#include <clocale>

using namespace std;
int main()

{ const int n = 5;
int a[n], i;
int *pbegin = a;
int *pend = a + 5;
bool t;
for (i = 0; i < 5; i++)
{
cin >> a[i];
}

t = true;
for (i = 0; i < n && t; i++)			
if (a[i] == 0) t = false;
for (int i = 1; i < n && t; i++)
if (a[i] * a[i - 1] > 0)
t = false;
cout<< t <<endl; 	 

delete [] a;
return 0;

}
Пожалуйста, помогите разобраться, что тут не так. Заранее спасибо
 
R

ruamanga

Строка :
delete [] a;
явно лишняя т.к. delete используется к объектам созданным через new.

у меня отработало без ошибки:
Код:
#include <iostream>

int main() {
const int n = 5;
int a[n], i;
bool t;

for (i = 0; i < n; i++) {
std::cin >> a[i];
}

t = true;

for (i = 0; i < n && t; i++) {
if (a[i] == 0) t = false;
}

for (int i = 1; i < n && t; i++) {
if (a[i] * a[i - 1] > 0) t = false;
}

std::cout << t <<std::endl;

return 0;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!