Как найти сумму двух элементов массива

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given an array print sum of the pairwise consecutive elements.

    Examples: 

    Input  : 8, 5, 4, 3, 15, 20
    Output : 13, 9, 7, 18, 35
    
    Input  : 5, 10, 15, 20
    Output : 15, 25, 35 

    The solution is to traverse the array and saving the sum of consecutive numbers in the variable sum.

    Implementation:

    C++

    #include <stdio.h>

    #include <stdlib.h>

    void pairwiseSum(int arr[], int n) 

    {

        int sum = 0;   

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

        {

            sum = arr[i] + arr[i + 1];

            printf(" %d ", sum);

        }

    }

    int main()

    {

        int arr[] = {4, 10, 15, 5, 6};

        int n = sizeof(arr) / sizeof(arr[0]);

        pairwiseSum(arr, n);

        return 0;

    }

    Java

    class Arraysum {

        static void pairwiseSum(int arr[], int n)

        {

            int sum = 0;

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

            {

                sum = arr[i] + arr[i + 1];

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

            }

        }

        public static void main(String[] args)

        {

            int arr[] = {4, 10, 15, 5, 6};

            int n = arr.length;

            pairwiseSum(arr, n);

        }

    }

    Python3

    def pairwiseSum(lst, n):

        sum = 0;

        for i in range(len(lst)-1):

            sum = lst[i] + lst[i + 1]

            print (sum, end = " ")

    arr =[4, 10, 15, 5, 6]

    size = len(arr)

    pairwiseSum(arr, size)

    C#

    using System;

    class Arraysum {

        static void pairwiseSum(int []arr, int n)

        {

            int sum = 0;

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

            {

                sum = arr[i] + arr[i + 1];

                Console.Write(sum + " ");

            }

        }

        public static void Main()

        {

            int []arr = {4, 10, 15, 5, 6};

            int n = arr.Length;

            pairwiseSum(arr, n);

        }

    }

    PHP

    <?php

    function pairwiseSum($arr, $n

    {

        $sum = 0; 

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

        {

            $sum = $arr[$i] + $arr[$i + 1];

            echo $sum," ";

        }

    }

        $arr = array (4, 10, 15, 5, 6);

        $n = sizeof($arr) ;

        pairwiseSum($arr, $n);

    ?>

    Javascript

    <script>

    function pairwiseSum(arr, n)

    {

        let sum = 0;

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

        {

            sum = arr[i] + arr[i + 1];

            document.write(sum + " ");

        }

    }

    let arr = [ 4, 10, 15, 5, 6 ];

    let n = arr.length;

    pairwiseSum(arr, n);

    </script>

    Time Complexity: O(n) where n is no of elements in given array

    Auxiliary Space: O(1) because it is using constant space for variables

    Last Updated :
    20 Feb, 2023

    Like Article

    Save Article

    я начинающий в C++ и не могу найти решение …

    #include <iostream>
     
    int main()
    {   
        unsigned int N;
        std::cin >> N;
        int* arr = new int[N];
        int res = 0;
        int index1 = 0, index2 = 1;
        res = arr[0] + arr[1]; 
        for (int i = 1; i < N; i++) {
          std::cin >> arr[i];
        for (int j =  i + 1; j < N; ++j)
            if (arr[i] + arr[j] < res)
            {
                res = arr[i] + arr[j];
                index1 = i;
                index2 = j;
            }
        }  
     std::cout << arr[index1] << " " << arr[index2];
    }
    

    Примеры

    Входные данные

    5 1 2 3 4 5
    

    Результат работы

    1 2
    

    Входные данные

    10 -100 100 -753 999 -159 9 45 7 -8 -1
    

    Результат работы

    -100 100
    

    Входные данные

    3 0 1 -2
    

    Результат работы

    0 1
    

    icYFTL's user avatar

    icYFTL

    1,6487 серебряных знаков22 бронзовых знака

    задан 4 июл 2020 в 19:45

    Const_Int's user avatar

    2

    Вынесите ввод данных отдельно от обработки, иначе на каждом шаге ещё нечего обсчитывать.

    for (int i = 1; i < N; i++) 
          std::cin >> arr[i];
    int res = 0;
    int index1 = 0, index2 = 1;
    res = arr[0] + arr[1]; 
    
     for (int i = 1; i < N; i++) {
        for (int j =  i + 1; j < N; ++j)
            if (arr[i] + arr[j] < res)
            {
                res = arr[i] + arr[j];
                index1 = i;
                index2 = j;
            }
        }  
    

    Другой вариант — внутренний цикл должен проходить по началу массива (от нуля до i-1), а не по концу.

    ответ дан 5 июл 2020 в 2:35

    MBo's user avatar

    MBoMBo

    47.9k1 золотой знак17 серебряных знаков40 бронзовых знаков

    Помогаю со студенческими работами здесь

    Найти сумму двух элементов массива, максимально близкую к заданному значению (но не превышающую его)
    Помогите мне создать алгоритм который бы сумировал каждую пару чисел и выводил которая …

    Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр, а также найти максимальный элемент массива
    Вот, что есть.Помогите довести до ума!

    #include &lt;cstdlib&gt;
    #include &lt;iostream&gt;
    #include…

    Найти сумму элементов массива до первого элемента равного 0, и сумму оставшихся элементов (функции)
    Дан массив а1, а2, …, а12. Вычислить сумму элементов этого массива до первого элемента, равного 0,…

    Функции в с++. Найти сумму элементов массива D, а также суммы квадратов и кубов элементов массива D.
    Запутался уже -_- Куда че пихать не могу понять…
    Дан произвольный массив D размера k. Найти…

    Одномерные массивы и указатели (найти количество элементов массива, равных 0, сумму элементов массива…)
    Помогите пожалуйста разработать программу и реализовать интуитивный понятный интерфейс (используя…

    Найти сумму элементов массива, равных среднему арифметическому всех элементов массива
    здравствуйте
    я студентка первого курса и мы изучаем С и С++
    работам в борланде
    моя задача,над…

    Искать еще темы с ответами

    Или воспользуйтесь поиском по форуму:

    2

    deadloop

    Добрый день, очень простой вопрос, но я ни как не могу найти на него ответ. У меня получается найти сумму каждых двух элементов, это не трудно, но мне нужно посчитать 1 + 2 = 3, затем 2 + 3 = 5, и т.д. Каждые два соседних элемента.

    $arrary = [1, 2, 3, 4, 5, 6, 7, 8, 9];


    • Вопрос задан

      более года назад

    • 468 просмотров

    Что, если брать все элементы, начиная не с нулевого, а с первого? И складывать с предыдущим!

    Напишите обычным циклом for

    spoiler

    $a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, ];
    
    $result = [];
    for ($i = 1; $i < count($a); $i++) {
        $result[] = $a[$i] + $a[$i - 1];
    }

    Пригласить эксперта


    • Показать ещё
      Загружается…

    27 мая 2023, в 13:11

    1000 руб./за проект

    27 мая 2023, в 13:10

    1000 руб./за проект

    27 мая 2023, в 12:51

    10000 руб./за проект

    Минуточку внимания

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

    Задание

    У нас есть массив с целыми числами, как с положительными, так и отрицательными. Все числа в массиве разные. Если сложить или вычесть любые два числа из массива, они точно поместятся в стандартной целочисленной переменной.

    Ещё у нас есть какое-то целое число — оно не в массиве, а само по себе, отдельной переменной.

    Нужно вывести индексы тех двух элементов, которые в сумме дают то самое отдельное число. Например, если в массиве у нас (2, 4, 5, 1, 8), а число — 5, то ответом будет пара 1 и 3, потому что на этих местах стоят числа 4 и 1 (и дают в сумме 5). Помните, что нумерация массивов почти во всех языках программирования начинается с нуля.

    Решение простым перебором

    Самый простой способ решить эту задачу — перебрать попарно все элементы массива и посмотреть, даст ли какая-то пара нужную сумму. Этот код вряд ли впечатлит работодателя, но результат вы получите верный.

    Логика такая:

    1. В первом цикле перебираем все элементы от первого до предпоследнего.
    2. Внутрь вкладываем второй, но делаем это так, чтобы не пересекаться по индексам с первым циклом. Для этого смотрим на переменную, с которой работает первый цикл, и начинаем со следующей — и до последнего элемента.
    3. Внутри второго цикла складываем элементы массива с нашими индексами и смотрим, получился нужный результат или нет.
    4. Если получился — выводим результат и останавливаемся.
    5. Если не получился — идём на новый виток цикла.
    6. Если мы прошли весь массив, но так ничего и не нашли — выводим сообщение о том, что такой пары нет.
    # массив с числами
    nums = [2, 4, 5, 1, 8]
    
    # сумма
    target = 5
    
    # функция, которая найдёт ответ
    def twoSum(nums, target):
        # сообщение по умолчанию
        answer = 'В массиве нет такой пары чисел'
        # запускаем первый цикл
        for i in range(len(nums) - 1):
            #  запускаем второй цикл
            for j in range(i + 1, len(nums)):
                # если получили нужный результат —
                if target == nums[i] + nums[j]:
                    # меняем ответ и добавляем в него индексы элементов
                    answer = 'Ответ: ' + str(i) + ' и ' + str(j)
        # выводим результат работы функции 
        return answer
    
    # запускаем код
    print(twoSum(nums, target))

    Разбор: задача про массив и сумму чисел

    Решение с дополнительным словарём

    Если хотите показать, что вы умеете нестандартно мыслить — используйте приём с дополнительным словарём, в котором данные хранятся попарно: ключ и значение. С ним можно убрать один вложенный цикл и сократить количество вычислений. Работает приём так: мы создаём дополнительный словарь, в котором будем хранить результаты просмотра исходного массива. Но создаём его с одной особенностью: мы будем заполнять его не по порядку, а указывая в качестве ключей значения элементов исходного массива. Например, если в исходном массиве у элемента с индексом 2 значение равно 15, то мы в новом словаре создаём элемент с ключом 15 и кладём туда двойку:

    Разбор: задача про массив и сумму чисел

    Это даст нам быстрый доступ к индексам уже проверенных элементов — мы просто указываем значение элемента и сразу получаем его индекс в исходном массиве. 

    Остальная логика выглядит так:

    1. Перебираем исходный массив и на каждом шаге считаем разницу между нужным значением и очередным элементом.
    2. Если разница есть в словаре с просмотренными элементами — выводим оба индекса.
    3. Если разницы в словаре нет — добавляем только что просмотренный элемент в словарь.

    Проще говоря, мы перебираем элементы, считаем разницу и смотрим, попадался ли нам результат вычитания среди тех элементов, которые мы уже перебрали. Вот как это выглядит в коде:

    # массив с числами
    nums = [2, 4, 5, 1, 8]
    
    # сумма
    target = 5
    
    # функция, которая найдёт ответ
    def twoSum(nums, target):
        # сообщение по умолчанию
        answer = 'В массиве нет такой пары чисел'
        # дополнительный словарь с уже проверенными элементами
        hashmap = {}
        # перебираем исходный массив
        for i in range(len(nums)):
            # находим разницу между нужным значением и очередным элементом
            complement = target - nums[i]
            # если такое значение нам уже попадалось раньше —
            if complement in hashmap:
                # получаем индекс того значения и выводим ответ
                answer = 'Ответ: ' + str(hashmap[complement]) + ' и ' + str(i)
            # если не попадалось — запоминаем индекс по значению элемента
            hashmap[nums[i]] = i
        # выводим результат работы функции 
        return answer
    
    # запускаем код
    print(twoSum(nums, target))

    Разбор: задача про массив и сумму чисел

    Что дальше

    Есть ещё третий способ решения этой задачи — попробуйте найти его сами и почувствовать себя на собеседовании. И подпишитесь, чтобы не пропустить новые статьи с разборами.

    Вёрстка:

    Кирилл Климентьев

    Понравилась статья? Поделить с друзьями:
  • Как найти жилье на филиппинах
  • Как найти максимум функции без производной
  • Как найти длину в математике 5 класс
  • Как найти почтовое отправление по почте россии
  • Температура в квартир как составить акт