Improve Article
Save Article
Like Article
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
1,6487 серебряных знаков22 бронзовых знака
задан 4 июл 2020 в 19:45
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
MBoMBo
47.9k1 золотой знак17 серебряных знаков40 бронзовых знаков
Помогаю со студенческими работами здесь
Найти сумму двух элементов массива, максимально близкую к заданному значению (но не превышающую его)
Помогите мне создать алгоритм который бы сумировал каждую пару чисел и выводил которая …
Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр, а также найти максимальный элемент массива
Вот, что есть.Помогите довести до ума!
#include <cstdlib>
#include <iostream>
#include…
Найти сумму элементов массива до первого элемента равного 0, и сумму оставшихся элементов (функции)
Дан массив а1, а2, …, а12. Вычислить сумму элементов этого массива до первого элемента, равного 0,…
Функции в с++. Найти сумму элементов массива D, а также суммы квадратов и кубов элементов массива D.
Запутался уже -_- Куда че пихать не могу понять…
Дан произвольный массив D размера k. Найти…
Одномерные массивы и указатели (найти количество элементов массива, равных 0, сумму элементов массива…)
Помогите пожалуйста разработать программу и реализовать интуитивный понятный интерфейс (используя…
Найти сумму элементов массива, равных среднему арифметическому всех элементов массива
здравствуйте
я студентка первого курса и мы изучаем С и С++
работам в борланде
моя задача,над…
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму:
2
Добрый день, очень простой вопрос, но я ни как не могу найти на него ответ. У меня получается найти сумму каждых двух элементов, это не трудно, но мне нужно посчитать 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). Помните, что нумерация массивов почти во всех языках программирования начинается с нуля.
Решение простым перебором
Самый простой способ решить эту задачу — перебрать попарно все элементы массива и посмотреть, даст ли какая-то пара нужную сумму. Этот код вряд ли впечатлит работодателя, но результат вы получите верный.
Логика такая:
- В первом цикле перебираем все элементы от первого до предпоследнего.
- Внутрь вкладываем второй, но делаем это так, чтобы не пересекаться по индексам с первым циклом. Для этого смотрим на переменную, с которой работает первый цикл, и начинаем со следующей — и до последнего элемента.
- Внутри второго цикла складываем элементы массива с нашими индексами и смотрим, получился нужный результат или нет.
- Если получился — выводим результат и останавливаемся.
- Если не получился — идём на новый виток цикла.
- Если мы прошли весь массив, но так ничего и не нашли — выводим сообщение о том, что такой пары нет.
# массив с числами
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 и кладём туда двойку:
Это даст нам быстрый доступ к индексам уже проверенных элементов — мы просто указываем значение элемента и сразу получаем его индекс в исходном массиве.
Остальная логика выглядит так:
- Перебираем исходный массив и на каждом шаге считаем разницу между нужным значением и очередным элементом.
- Если разница есть в словаре с просмотренными элементами — выводим оба индекса.
- Если разницы в словаре нет — добавляем только что просмотренный элемент в словарь.
Проще говоря, мы перебираем элементы, считаем разницу и смотрим, попадался ли нам результат вычитания среди тех элементов, которые мы уже перебрали. Вот как это выглядит в коде:
# массив с числами
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))
Что дальше
Есть ещё третий способ решения этой задачи — попробуйте найти его сами и почувствовать себя на собеседовании. И подпишитесь, чтобы не пропустить новые статьи с разборами.
Вёрстка:
Кирилл Климентьев