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

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

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

Ответы 3

  • "Крутую" конструкцию ((a[i]<0)and(a[i+1]<0)) or ((a[i]>0)and(a[i+1]>0)) обычно пишут в виде (a[i]*a[i+1])>0. Поскольку еще в начальной школе изучают, что произведение двух чисел, отличных от нуля и имеющих одинаковые знаки есть число положительное.
    • Автор:

      bucko
    • 6 лет назад
    • 0
  • А вообще алгоритм крайне неэффективный, потому что после того, как найдена искомая пара элементов, компьютер будет вынужден продолжать бесцельно перелопачивать остальную часть массива. что мешало организовать выход из цикла по условию - ума не приложу. Можно было использовать ненавистный канонам структурного программирования (привет Эдгару Дейкстре!) break, или применить цикл c пред/постусловием.
  • constn=10000;vara: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.            
    • Автор:

      chiquita
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years