aboutsummaryrefslogtreecommitdiff
path: root/challenge-261/ulrich-rieke/cpp/ch-1.cpp
blob: a088bfc147f8e6cf66e982df2f7acbca15e85ae4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <numeric>
#include <vector>
#include <iterator>
#include <cstdlib>

int digitsum( int n ) {
   int sum = 0 ;
   while ( n != 0 ) {
      sum += n % 10 ;
      n /= 10 ;
   }
   return sum ;
}

int main( ) {
   std::cout << "Enter some integers, separated by blanks!\n" ;
   std::cout << "Enter e to end!\n" ;
   std::vector<int> numbers {std::istream_iterator<int>{std::cin} , 
      std::istream_iterator<int>{}} ;
   int element_sum = std::accumulate( numbers.begin( ) , numbers.end( ) ,
	 0 ) ;
   std::vector<int> digitsums ;
   for ( int i : numbers ) 
      digitsums.push_back( digitsum( i ) ) ;
   int total_digitsums = std::accumulate( digitsums.begin( ) , 
	 digitsums.end( ) , 0 ) ;
   std::cout << std::abs( total_digitsums - element_sum) << '\n' ;
   return 0 ;
}