Jump to content
xisto Community
Faint545

Sum Fucntion? Ive been searching the web for a sum fucntion but...

Recommended Posts

I've been searching the web for a sum fucntion but I just can't seem to find one...I'm programming in C++ and I have an array of numbers ( name[#] ) and I would like to calculate the sum of them without typing out the positions individually. Is there any way that is possible?

Share this post


Link to post
Share on other sites

Here's something I came up with

#include <iostream>int sum(int arr[], int length){	int sum = 0;	for(int i = 0, n = length; i < n; i++){		sum += arr[i];	}	return sum;}int main(){	int test[] = { 1, 2, 3, 4, 5 };	int result = sum(test, sizeof(test)/sizeof(int));	std::cout << result << std::endl;	return 0;}

The problem with sending an array to a function is that the size information is lost, so you must send the size yourself. That is why I used sizeof(array)/sizeof(int); to work out the size of it.

Cheers,


MC

Share this post


Link to post
Share on other sites

You could also use the STL algorithm 'accumulate':

#include <algorithm>#include <iostream>//...int main(){	int test[] = { 1, 2, 3, 4, 5 };	int result = std::accumulate(test, test + 5);	std::cout << result << std::endl;	return 0;}
It takes a pointer or iterator to the start of a sequence and a pointer of iterator one past the end of the sequence. Simply put, the first argument is the name of the array and the second is the name of the array plus the size of the array. You can also use it for STL containers, as in:
#include <algorithm>#include <iostream>#include <vector>//...int main(){	std::vector<int> test(4,9);	int result = std::accumulate(test.begin(), test.end());	std::cout << result << std::endl;	return 0;}

Edited by bluefish (see edit history)

Share this post


Link to post
Share on other sites

If you are running C++, you should have no problem writing down a loop

Sum=1

while blah...

++sum

 

No ?

 


You did some mistake. Actually you wrote in pseudocode count function. Sum differ from what you wrote in first line: Sum = 0, then in third Sum +=

Here is simple one line example code: for( float Sum=0, int i=0; i<sizeof(array); i++) Sum+=array;

Share this post


Link to post
Share on other sites

You did some mistake. Actually you wrote in pseudocode count function. Sum differ from what you wrote in first line: Sum = 0, then in third Sum +=

Here is simple one line example code: for( float Sum=0, int i=0; i<sizeof(array); i++) Sum+=array;

 

Ouch ! yes, you are right. I could imagine that, before starting, the sum is 0, and I started with Sum=1.

You know, a lot of people did this mistake some years ago.

They really thought that January 1st 2000 was the beginning of the new century. And that's false, it was the beginning of the last year of the old century.

Still the same problem : how do you count the things in your pocket : 1 - 2 - 3 - 4, or 0 - 1 - 2 -3 ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.