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

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Помогите Пожалуйста Найти Ошибку В Коде

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

Lizzz

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

#include <iostream>
#include <math.h>

using namespace std;
int main()
{
int i;
int a[5];
bool t;
for (i=0; i<5; i++)
{
cout <<"Введите элемент массива: ";
cin >> a ;
}
for (i=0; i<5; i++)
{
if (a*a[i+1]>=0) t = false;

else t = true;}
cout<< t <<endl;
return 0;
}

Не пойму, в чем ошибка, переписывала программу несколько раз разными способами, все равно не работает. При вводе всех единиц выдает true, работает верно только если ввести все нули или несколько нулей.
Помогите пожалуйста, заранее большое спасибо.
 
R

rrrFer

Переменной t присвоить значение true, если в массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными и значение false в противном случае.
Код:
t = true;

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

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

std::cout << t;

не проверял, тут не очень хороший, но зато простой и наглядный вариант

Добавлено:
все равно не работает

Код:
for (i=0; i<5; i++)
{
if (a[i]*a[i+1]>=0) t = false;

else t = true;}

значение t у вас полностью определяется последним элементом списка - вы его на каждой итерации вычисляете.

При вводе всех единиц выдает true,
вы там берете a[i+1], и при i равном 4 будет взят a[5] - но у вас массив всего из 5 элементов, вы вычисляете свое t из мусора, что хранится за массивом (скорее всего там большие отрицательные числа, поэтому в вашем случае при вводе всех единиц оно так и считало :)
 
Мы в соцсетях:

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