7844. Соседи одного знака

 

Задан массив из n целых чисел. Выведите пары соседних элементов одного знака. Если соседних элементов одного знака нет, то ничего не выводите.

 

Вход. В первой строке записано число n. В следующей строке записано n целых чисел. Все числа по модулю не превышают 100.

 

Выход. Выведите пары соседних элементов одного знака.

 

Пример входа 1

Пример выхода 1

7

9 5 -7 -7 5 -9 -4

9 5

-7 -7

-9 -4

 

 

Пример входа 2

Пример выхода 2

10

-8 -10 -2 1 -9 5 -9 0 0 -9

-8 -10

-10 -2

 

 

РЕШЕНИЕ

массив

 

Анализ алгоритма

Прочитаем входную последовательность чисел в массив m. Далее при помощи цикла выведем пары соседних элементов одного знака. Пара элементов mi и mi+1 имеют один знак, если их произведение положительно: mi * mi+1 > 0.

 

Реализация алгоритма

Объявим рабочий массив.

 

int m[101];

 

Читаем количество входных чисел n.

 

scanf("%d",&n);

 

Читаем входной массив.

 

for (i = 0; i < n; i++)

  scanf("%d", &m[i]);

 

Выводим пары соседних элементов одного знака.

 

for (i = 0; i < n - 1; i++)

  if (m[i] * m[i + 1] > 0)

    printf("%d %d\n", m[i], m[i + 1]);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);   

    int n = con.nextInt();

    int m[] = new int[n];

    for(int i = 0; i < n; i++)

      m[i] = con.nextInt();

   

    for(int i = 0; i < n - 1; i++)

      if (m[i] * m[i+1] > 0)

        System.out.println(m[i] + " " + m[i+1]);

    con.close();

  }

}

 

Python реализация

 

n = int(input())

lst = list(map(int, input().split()))

for i in range(n - 1):

  if lst[i] * lst[i+1] > 0: print(lst[i], lst[i+1])