Welcome Guest ( Log In | Register )



 
Reply to this topicStart new topic
> Sum Fucntion?, I've been searching the web for a sum fucntion but...
Faint545
post Feb 26 2006, 05:22 PM
Post #1


Newbie [ Level 1 ]
Group Icon

Group: Members
Posts: 1
Joined: 26-February 06
Member No.: 11,584



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?
Go to the top of the page
 
+Quote Post
yordan
post Feb 26 2006, 05:34 PM
Post #2


Way Out Of Control - You need a life :)
Group Icon

Group: [MODERATOR]
Posts: 2,238
Joined: 16-August 05
Member No.: 7,896
myCENTs:34.00



If you are running C++, you should have no problem writing down a loop
Sum=1
while blah...
++sum

No ?
Go to the top of the page
 
+Quote Post
mastercomputers
post Feb 26 2006, 11:02 PM
Post #3


PESTICIDAL MANIAC
Group Icon

Group: Members
Posts: 626
Joined: 1-September 04
From: Auckland, New Zealand
Member No.: 27



Here's something I came up with

CODE

#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
Go to the top of the page
 
+Quote Post
bluefish
post Dec 16 2006, 06:15 PM
Post #4


Member [ Level 2 ]
Group Icon

Group: Members
Posts: 71
Joined: 16-December 06
Member No.: 18,419



You could also use the STL algorithm 'accumulate':
CODE
#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:
CODE
#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;
}


This post has been edited by bluefish: Dec 16 2006, 06:16 PM
Go to the top of the page
 
+Quote Post
ignite
post Jan 12 2007, 11:52 AM
Post #5


Member [ Level 1 ]
Group Icon

Group: Members
Posts: 34
Joined: 17-November 06
Member No.: 17,334



QUOTE(yordan @ Feb 26 2006, 07:34 PM) *

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[i];
Go to the top of the page
 
+Quote Post
yordan
post Jan 12 2007, 12:40 PM
Post #6


Way Out Of Control - You need a life :)
Group Icon

Group: [MODERATOR]
Posts: 2,238
Joined: 16-August 05
Member No.: 7,896
myCENTs:34.00



QUOTE(ignite @ Jan 12 2007, 12:52 PM) *

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[i];

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 ?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

Collapse

> Similar Topics

Topics Topics
  1. Alt Txt Tooltip Popups Over Text Links, How To Do?(11)
  2. How To Configure Wine For Fallout?(3)
  3. Searching For A Good Dvd Video Editing Tool(0)
  4. Searching For Alternate Flash Image Viewer(2)
  5. I', Searching A Program(1)
  6. Google Trends(7)
  7. Earn Lot Of Money Searching(7)
  8. Searching For Freeware Cad Application...(2)


 



- Lo-Fi Version Time is now: 2nd December 2008 - 12:10 PM