Как добавить все числа в массив в C++?
вместо ввода
array[0] + array[1] //.....(and so on)
есть ли способ сложить все числа в массиве? Язык, который я использую, будет c++ Я хочу иметь возможность делать это с меньшим количеством ввода, чем если бы я просто набрал все это.
7 ответов
попробуйте это:
int array[] = {3, 2, 1, 4};
int sum = 0;
for (int i = 0; i < 4; i++) {
sum = sum + array[i];
}
std::cout << sum << std::endl;
вот это идиоматические способ сделать это в C++:
int a[] = {1, 3, 5, 7, 9};
int total = accumulate(begin(a), end(a), 0, plus<int>());
скажите, что у вас есть int array[N]
.
Вы можете просто сделать:
int sum = 0;
for(auto& num : array)
sum += num;
Если вы используете valarray
, есть функция-член sum()
для этого.
#include <iostream> // std::cout
#include <valarray> // std::valarray
int main () {
std::valarray<int> myvalarray(4);
myvalarray[0] = 0;
myvalarray[1] = 10;
myvalarray[2] = 20;
myvalarray[3] = 30;
std::cout << "The sum is " << myvalarray.sum() << '\n';
return 0;
}
самый простой способ сделать это-использовать цикл. Бонус заключается в том, что вы можете использовать его на любом целочисленном массиве, не переписывая много кода на всех. Я использую Java чаще, поэтому надеюсь, что синтаксических ошибок не слишком много, но что-то вроде этого должно работать:
int addArray(int[] array, int length){
int sum=0;
for(int count=0;count<length;count++){
sum+=array[count];
}
return sum;
}
в C++17 можно использовать выражения сгиба:
template<typename ...Ts>
int sum_impl(Ts&& ...a)
{
return (a + ...);
}
если sum_impl
имел постоянное количество параметров, мы могли бы назвать это так:
std::apply(sum_impl, arr);
предполагая, что arr-это std::array<int, N>
. Но поскольку он вариативен, его нужно немного подтолкнуть с помощью помощников:
using namespace std;
template <class Array, size_t... I>
int sum_impl(Array&& a, index_sequence<I...>)
{
return sum_impl(get<I>(forward<Array>(a))...);
}
template <class Array>
int sum(Array&& a)
{
return sum_impl(forward<Array>(a),
make_index_sequence<tuple_size_v<decay_t<Array>>>{});
}
поэтому, предполагая, что эти помощники на месте, код будет выглядеть примерно так:
template<typename ...Ts>
int sum_impl(Ts&& ...a)
{
return (a + ...);
}
int main()
{
array<int, 10> arr{0,1,2,3,4,5,6,7,8,9};
cout << sum(arr) << "\n";
return 0;
}
мы можем использовать пользовательскую функцию.
Фрагмент Кода :
#include<bits/stdc++.h>
using namespace std;
int sum(int arr[], int n)
{
int sum=0;
for(int i=0; i<n; i++)
{
sum += arr[i];
}
return sum;
}
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int n = distance(begin(arr), end(arr));
int total = sum(arr,n);
printf("%d", total);
return 0;
}