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 . . .

Recommended Answers

All 7 Replies

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;
}

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!

>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.

#include <iostream>

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

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

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

	return 0;

}
#include <iostream>

[B][I]using namespace std;[/I][/B]

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;
}

>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.

commented: Thank you very much for the feedback +1

>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.

[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>>...;
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.