• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы 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, работает верно только если ввести все нули или несколько нулей.
Помогите пожалуйста, заранее большое спасибо.
 
Переменной 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 из мусора, что хранится за массивом (скорее всего там большие отрицательные числа, поэтому в вашем случае при вводе всех единиц оно так и считало :)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab