Вывести YES, если есть два соседних элемента массива с одинаковыми знаками - C (СИ)
Формулировка задачи:
Программа должна вывести YES, если есть два соседних элемента с одинаковыми знаками, и NO – иначе.
Вот мое решение:
Выдается неправильный ответ,когда нет последовательных чисел одинакового знака .
#include <stdio.h>
int main(void)
{
int i,n,a;
a=0;
scanf("%d",&n);
int arr[n];
for (i=0;i<n;i++)
scanf ("%d",&arr[i]);
for (i=0;i<n;i++)
{
if (((arr[i]>0)&&(arr[i+1]>0))||((arr[i]<0)&&(arr[i+1]<0)))
a=1;
else
a=0;
}
if (a==1)
printf("YES");
else
printf("NO");
return 0;
}Решение задачи: «Вывести YES, если есть два соседних элемента массива с одинаковыми знаками»
textual
Листинг программы
a=0;
for (i=0;i<n-1;i++)
{
if (arr[i]*arr[i+1]<0)
{
a=1;
break;
}
}
Объяснение кода листинга программы
- Переменная
aинициализируется значением 0. - Происходит цикл по элементам массива
arrот индекса 0 до n-2. - Внутри цикла проверяется условие: произведение текущих и следующего элементов массива меньше нуля.
- Если условие выполняется, то переменной
aприсваивается значение 1 и цикл прерывается командойbreak. - После завершения цикла выводится значение переменной
a. - Если значение переменной
aравно 1, то выводится словоYES, иначе выводится словоNO.