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

Having problem with array in for loop...

I did fine on this in C, not sure what I'm doing wrong here. Probably something silly on my end. I'm receiving odd numbers in my program below. I have included the output below the program. Any assistance would be quite appreciated. Thanks!

#include <iostream>

int main()
{
	using namespace std;
	int exercise[5], i;

	cin >> exercise[0];

	for (i = 0; i < 5; i++)
	{
		cout << exercise[i] << endl;
	}

	return 0;

}


------------------------------------
I enter the numbers 1, 2, 3, 4, and 5 in the beginning. I am expecting the Output to be:

1 2 3 4 5
1
2
3
4
5
Press any key to continue...

but instead, the output is:

1 2 3 4 5
1
4313739
4313508
4313739
4268019
Press any key to continue . . .

JoeRoss578
Newbie Poster
2 posts since Oct 2008
Reputation Points: 10
Solved Threads: 0
 

You only fill exercise[0]. Perhaps this would work better for you:

for (i = 0; i < 5; i++)
{
	cin >> exercise[i];
	cout << exercise[i] << endl;
}
Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

Ah, I understand now. I thought it might have something to do with that, but my professor didn't explain it very well in class last night. Thanks!

JoeRoss578
Newbie Poster
2 posts since Oct 2008
Reputation Points: 10
Solved Threads: 0
 

>but my professor didn't explain it very well in class last night
How about you try to explain it to me as you understand it, then I'll fill in the blanks for you.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 
#include <iostream>

int main()
{
<strong>	using namespace std;</strong>  // out of place
	int exercise[5], i;

	<strong>cin >> exercise[0];</strong>  // is only entering one value 

	for (i = 0; i < 5; i++)
	{
		cout << exercise[i] << endl;
	}

	return 0;

}
#include <iostream>

<strong><em>using namespace std;</em></strong>

int main()
{
    int exercise[5];
    for(int i=0; i<5; i++)   // C++ arrays start with index 0, so its 0, 1, 2, 3, 4
    {
        cin >> exercise[i];   // index[0] gets 1, [1] gets 2, ...
        cout << exercise[i]; // as you input, 12345, it will also output
    }

    for(int i=0; i<5; i++)
    {
        cout << element[i] << endl; // endl is endline (or a new line)
    }

    return 0;
}
chococrack
Junior Poster
149 posts since Oct 2008
Reputation Points: 92
Solved Threads: 16
 

>using namespace std; // out of place
Actually, that's a better place than your proposed solution. The effect of a using directive is limited by scope. When you restrict the directive to a block scope, you minimize the chances of a name collision and effectively remove the biggest reason for avoiding the using directive[1].

>// C++ arrays start with index 0, so its 0, 1, 2, 3, 4
I think it's safe to say that the OP already understands this. :icon_rolleyes:

[1] The reason: a using directive at global scope defeats the purpose of namespaces. The only reason you should have a using directive at global scope is when porting pre-standard C++ quickly. In new code, it's a bad practice.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 
>using namespace std; // out of place Actually, that's a better place than your proposed solution.

Neat stuff thanks for the feedback. I do appreciate lots of your posts. I learn a lot of neat things. Had no idea it was even legal to use a directive on a block scope.

chococrack
Junior Poster
149 posts since Oct 2008
Reputation Points: 92
Solved Threads: 16
 
[1] The reason: a using directive at global scope defeats the purpose of namespaces. The only reason you should have a using directive at global scope is when porting pre-standard C++ quickly. In new code, it's a bad practice.

EXACTLY :D 100% agree
thats why I am writing the whole time :twisted: :

std::cout<<......std::endl;
std::cin>>...;
sidatra79
Junior Poster
114 posts since Feb 2008
Reputation Points: 46
Solved Threads: 8
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You