Hi all, I am new to C programming, can anyone help me out with a solution to find sum of digits of a 5-digit number without using control statements, like if, for... thank you

## Featured Replies in this Discussion

• ... ... Read the question again?
Post Contains: Quotes

Sorry. I thought this was in C++ ...

make an array, loop through, and sum:

``````int total = 0;
int array[ARRAY_SIZE];
/* Fill array with info */

for [0 -> ARRAY_SIZE-1]
total = total + array[CURRENT_POSITION]

print "Sum: " total``````

Obviously that's psuedo code.

[...] to find sum of digits of a 5-digit number without using control statements, like if, for... thank you

make an array, loop through, and sum:

NIce catch

Maybe you could use the modulus operator and recursion?

``````#include <stdio.h>

int sum_digi( const int &num ) {
if ( !num )
return num;
else
return (num%10)+sum_digi( num/10 );
}

int main( void ) {
int sum = sum_digi( 12345 );

printf( "Sum: %d\n\n", sum );

return 0;
}``````

Just simple recursion. What it does is it starts at 5 and works to 1. It gets the last digit (through the %10 operation), and then gets the next value through recursively calling the same function but dividing by ten to get the next digit (ie from 5 to 4 in this case).

It'll also work for bigger numbers.

Perhaps unroll the loop?

``````int number = 56789, sum = 0;
sum += number % 10; number /= 10;
sum += number % 10; number /= 10;
sum += number % 10; number /= 10;
sum += number % 10; number /= 10;
sum += number % 10; number /= 10;``````

...He that is without sin among you, let him first cast a stone... John 8:7
However you are still using if/else control statements.

``````if ( !num )
return num;
else
return (num%10)+sum_digi( num/10 );``````

``````#include <stdio.h>

int sum_digi( const int &num ) {
if ( !num )
return num;
else
return (num%10)+sum_digi( num/10 );
}

int main( void ) {
int sum = sum_digi( 12345 );

printf( "Sum: %d\n\n", sum );

return 0;
}``````

Just simple recursion. What it does is it starts at 5 and works to 1. It gets the last digit (through the %10 operation), and then gets the next value through recursively calling the same function but dividing by ten to get the next digit (ie from 5 to 4 in this case).

It'll also work for bigger numbers.

Read it again, you used an if statement as Aia mentioned, in any case why are you doing someone else's homework. Leave them to their own devices:

>> Leave them to their own devices
I know. I normally don't but I misread the first post and apparently messed up the second. Fat load of use I am, eh?

I should start reading the posts more closely. Dave's method is probably what they want. Why don't you give out to Dave? (Kiddin').

Yes in future, know the difference between a helpful prod in the right direction and a complete solution, albeit incorrect. Bah ha ha!