A program will calculate and display the sum of all even even numbers from 2 to n, where n is a positive number inputted by the user. What should I do and what is the expression of that???
Printable View
A program will calculate and display the sum of all even even numbers from 2 to n, where n is a positive number inputted by the user. What should I do and what is the expression of that???
Sounds a lot like homework, so a hint is looking at modulus (%).
You should write code for it. :)
Take a pen and paper, write down the steps that need to be performed, then write the same steps in C# code.
Interesting homework. You can solve it without using a loop. ;) It is just a mathematical problem. The solution is quite simple so I believe you can solve it alone.
It doesn't work. Secondly, why are you trying to do this guys homework for him? Anyone with a week of programming experience in any language should be able to knock that out within 30 minutes in c#.Quote:
Originally Posted by klamath23
Let him at least put up his own attempt.
Also, don't fix your solution, at least make him do that.
How can you say it does'nt work. I have compiled it and seen the result. I should not do his homework, right i will delete for now. But if you say it does'nt work prove it to me , show me in private message. It very easy to just say it does'nt work.Quote:
Originally Posted by Mutant_Fruit
This is one way you can do it .Quote:
Originally Posted by codeexpert123
Code:int sum = 0;
for ( int i = 2; i <= n; i += 2 ) {
sum += i;
}
Well, the problem with your original code (from what i remember, i only glanced at it when i noticed the problem) was that you coded the loop like this:
So unless i misread it, it couldn't have worked. Maybe you transcribed it wrong, or maybe i misread. Either way, if that's what you did write, it was a mistake.Code:for(int i=0; i <= n; n++)
DoStuff();
i didnot write the full code because it was his homework problem , i just wanted to give him hint. I will send the complete code to by private message,Quote:
Originally Posted by Mutant_Fruit
This problem is not new this is asked many times in c++, java etc.
klamath23
Because of post #7 from klamath23 the solution is out now. Therefore I can post my solution too:
The complexness is reduced to O(1) from O(n/2) when using a loop.Code:public uint Calculate(uint n)
{
//ensure the number is an even number
if (n % 2 == 1)
n -= 1;
//calculate sum without a loop because it is a arithmetic progression
return Convert.ToUInt32(n*(n/4 + 0.5));
}
Suppose n=6. The final answer should be 6 + 4 + 2 = 12.Quote:
Originally Posted by torrud
In your code, if n=6, the final answer is 9. That's a bit of a problem ;)
6*(6/4+0.5) = 6 * 2 = 12
Try something like this ((n *n)/4 + (n* 0.5))Quote:
Originally Posted by Mutant_Fruit
if n = 6
then ((6*6)/4 + (6 *0.5)) = 12
Yes, but isn't n*(n/4 + 0.5) exactly the same as (n *n)/4 + (n* 0.5) ?
This works for human, this does'nt work in c# , so if you try something likeQuote:
Originally Posted by Zaccheus
((n *n)/4 + ( n * 0.5)) = 12 in c#.