904. Увеличить на 2

 

Задана последовательность целых чисел. Увеличьте на 2 каждый ее неотрицательный элемент.

 

Вход. В первой строке задано количество элементов последовательности n (n ≤ 100). Во второй строке заданы сами элементы, значение каждого из которых по модулю не превышает 100.

 

Выход. Выведите в одной строке n чисел: новые значения элементов последовательности в том же порядке, в котором они были заданы.

 

Пример входа

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

4

1 2 3 -4

3 4 5 -4

 

 

РЕШЕНИЕ

циклы

 

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

Задачу можно решить как при помощи массива, так и без него. Последовательно читаем числа, каждое неотрицательное увеличиваем на 2.

 

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

Читаем входное значение n.

 

scanf("%d",&n);

 

Последовательно читаем n чисел.

 

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

{

  scanf("%d",&val);

 

Если число val неотрицательно, то увеличиваем его на 2.

 

  if (val >= 0) val +=2;

 

Выводим число val после изменения.

 

  printf("%d ",val);

}

printf("\n");

 

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

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

 

int m[101];

 

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

 

scanf("%d",&n);

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

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

 

Перебираем элементы массива. Увеличиваем на 2 каждый его неотрицательный элемент.

 

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

  if (m[i] >= 0) m[i] = m[i] + 2;

 

Выводим ответ – результирующий массив.

 

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

  printf("%d ",m[i]);

printf("\n");

 

Реализация алгоритма – вектор, push_back

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

 

scanf("%d",&n);

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

{

  scanf("%d",&val);

  m.push_back(val);

}

 

Перебираем элементы массива. Увеличиваем на 2 каждый его неотрицательный элемент.

 

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

  if (m[i] >= 0) m[i] = m[i] + 2;

 

Выводим ответ – результирующий массив.

 

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

  printf("%d ",m[i]);

printf("\n");

 

Реализация алгоритмавектор, resize

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

 

scanf("%d",&n);

m.resize(n);

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

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

 

Перебираем элементы массива. Увеличиваем на 2 каждый его неотрицательный элемент.

 

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

  if (m[i] >= 0) m[i] = m[i] + 2;

 

Выводим ответ – результирующий массив.

 

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

  printf("%d ",m[i]);

printf("\n");

 

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

 

#include <stdio.h>

 

int i, n;

int *m;

 

int main(void)

{

  scanf("%d",&n);

  // выделение памяти

  m = new int[n];

  // чтение массива

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

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

 

  // обработка массива

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

    if (m[i] >= 0) m[i] = m[i] + 2;

 

  // вывод массива

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

    printf("%d ",m[i]);

  printf("\n");

 

  // освобождение памяти

  delete[] m;

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

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

    {

      int val = con.nextInt();

      if (val >= 0) val += 2;

      System.out.print(val + " ");

    }

    System.out.println();

    con.close();

  }

}

 

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; i++)

      if (m[i] >= 0) m[i] += 2;

   

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

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

    System.out.println();

    con.close();

  }

}

 

Java реализация – ArrayList

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    ArrayList<Integer> m = new ArrayList<Integer>();

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

    {

      int val = con.nextInt();

      m.add(val);

    }

   

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

      if (m.get(i) >= 0) m.set(i,m.get(i)+2);

   

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

      System.out.print(m.get(i) + " ");

    System.out.println();

    con.close();

  }

}

 

Python реализация

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

 

n = int(input())

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

 

Перебираем элементы списка lst. Увеличиваем на 2 каждый его неотрицательный элемент.

 

for i in range(n):

  if lst[i] >= 0:

    lst[i] = lst[i] + 2

 

Выводим ответ – список lst.

 

print(*lst)

 

Python реализацияпостроение списка

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

 

n = int(input())

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

 

Создадим реультирующий список p. Увеличиваем на 2 каждый неотрицательный элемент списка lst.

 

p = [x + 2 if x >= 0 else x for x in lst]

 

Выводим ответ.

 

print(*p)

 

Python реализация – map

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

 

n = int(input())

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

 

Объявим функцию f, определенную следующим образом:

f(n) =

 

def f(n):

  if n >= 0:

    return n + 2

  return n

 

Применяем функцию f к каждому элементу списка lst.

 

res = list(map(f,lst))

 

Выводим список res.

 

for x in res:

  print(x, end=" ")