Предмет: Информатика, автор: Looterize


Дан массив, состоящий из целых чисел. Напишите программу, которая определяет, есть ли в массиве пара соседних элементов с одинаковыми знаками.
Входные данные

Сначала задано число N — количество элементов в массиве (1N10000). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел.
Выходные данные

Необходимо вывести слово YES, если существует пара соседних элементов с одинаковыми знаками. В противном случае следует вывести слово NO.
Примеры
Входные данные
5
1 -3 4 -2 1
Выходные данные
NO

Ответы

Автор ответа: mnv1962
0
const
n=10000;
var
a:array[1..n]of integer;
i,n1, flag:integer;
begin
    readln(n1);
        for i:=1 to n1 do
             read(a[i]);
for i:=1 to n1-1 do
   if ((a[i]<0)and(a[i+1]<0))or
      ((a[i]>0)and(a[i+1]>0))then
                flag:=1;
if flag=1 then
    writeln('YES')
 else
    writeln('NO');
end.
            
Автор ответа: Аноним
0
А вообще алгоритм крайне неэффективный, потому что после того, как найдена искомая пара элементов, компьютер будет вынужден продолжать бесцельно перелопачивать остальную часть массива. что мешало организовать выход из цикла по условию - ума не приложу. Можно было использовать ненавистный канонам структурного программирования (привет Эдгару Дейкстре!) break, или применить цикл c пред/постусловием.
Похожие вопросы
Предмет: Физика, автор: hahadura
Предмет: Химия, автор: bogomolova1998