954,504 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

I need help quick!!

Ok, I'm writing a simple for loop with an accumulator for my class tonight and can't figure out what I'm doing wrong. I want the program to accept the first 10 even numbers from the keyboard and add them up and display an error message if someone enters an odd number, heres what I've got so far and the only real problem I'm having is getting the numbers to add up correctly. If some one could give me a quick response it would be great... Thanks so much.

// This program will accept and sum the first 10 even numbers as read from the keyboard.
#include
using namespace std;
//constants
const int terminatingvalue= 10;const int two=2;const int zero=0;

int main ()
{
//Variables
int ctr=1;int num;int sum=0;

// procces
for (int ctr=1; ctr<=10; ctr++)
{
cout<<"Enter a number"<>num;
if (num%two==zero)
{
sum=sum+num;
ctr++;
}
else
cout<<"Please enter an even number"<>num;

}
cout<<"Total is:"<

thinfineline
Newbie Poster
4 posts since Oct 2008
Reputation Points: 10
Solved Threads: 0
 

You're doing input of num twice in the loop, but only adding it once.

vmanes
Posting Virtuoso
1,914 posts since Aug 2007
Reputation Points: 1,268
Solved Threads: 228
 

You should use while loop, not for.

And you haven't declared 'two' and 'zero'.
Why don't you simply put 2 and 0?

Sci@phy
Posting Whiz in Training
279 posts since Sep 2008
Reputation Points: 110
Solved Threads: 43
 

My teacher said it had to be a for loop and had to declare 2 and 0 and type them out (yeah she's a little nuts). Take the second num input out worked for getting it to add correctly but now my counters off it's only accepting 6 numbers not 10.

thinfineline
Newbie Poster
4 posts since Oct 2008
Reputation Points: 10
Solved Threads: 0
 

because your for loop is counting for you, and still, you are counting for yourself in
if (num%two==zero)
{
sum=sum+num;
ctr++;
}

Sci@phy
Posting Whiz in Training
279 posts since Sep 2008
Reputation Points: 110
Solved Threads: 43
 

That fixed it. I'm really sorry about the stupid questions, this is my first programming class and I'm having a really hard time with it. Thanks a bunch.

Wes

thinfineline
Newbie Poster
4 posts since Oct 2008
Reputation Points: 10
Solved Threads: 0
 

If you leave it as is, it will only perform 10 repetitions of the loop, including invalid inputs. Then you'd only get the first 10 - (number of errors) even integers in your summation. My suggestion is this:

for (int ctr=1; ctr<=10; )
{

	cout<<"Enter a number"<<endl;
	cin>>num;
	if (num%two==zero)
	{
		sum=sum+num;
		ctr++; // only increment when a valid summation occurs
	}
	else
	cout<<"Please enter an even number"<<endl;

	cout<<"Enter a number"<<endl;
	cin>>num;

}


Let me explain the for structure I used here.
for (int ctr=1; ctr<=10; )

- your original for loop incremented ctr on each run (int ctr=1; ctr<=10; ctr++)
- what I'm doing different is removing the incrementing of ctr from every run, so that
invalid numbers that are input (odds) do not count toward the number of repetitions
- this way you get 10 total numbers and not a lower number

chococrack
Junior Poster
149 posts since Oct 2008
Reputation Points: 92
Solved Threads: 16
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You