+ 2

How to improve my code

I have a piece of code which I want to see in what ways I can improve and what I should do differently to make it more "professional" #include <iostream> using namespace std; void continuemo(); int myArr[8]; int main() { for(int x = 0; x<8; x++){ cin >> myArr[x]; } continuemo(); } void continuemo(){ for(int x = 0; x<8; x++){ cout << myArr[x] << endl; } }

1st Feb 2017, 1:58 AM
Frederick Lopez
Frederick Lopez - avatar
12 ответов
+ 10
#include <iostream> using namespace std; void continuemo(int[]); int main() { int myArr[8]; for(int x = 0; x<8; x++) { cin >> myArr[x]; } continuemo(myArr); return 0; } void continuemo(int myArr[]) { for(int x = 0; x<8; x++) { cout << myArr[x] << endl; } }
1st Feb 2017, 2:06 AM
Hatsy Rei
Hatsy Rei - avatar
+ 10
@~datell Good points you have there, but since vectors are not covered in SL, I would have a way to do it without them. #include <iostream> using namespace std; int y; void func(); int main() { int x; cin >> x; int array[x]; y = sizeof(array)/sizeof(array[0]); func(); return 0; } void func() { cout << y; } As much as I dislike global variables, this is one way to get size of array without passing it into the function which needs it. Thanks for the info on sizeof() working only in one function, I did not know that. ;>
1st Feb 2017, 7:39 AM
Hatsy Rei
Hatsy Rei - avatar
+ 8
@~datell Are you referring to: "...but since vectors are not covered in SL..." I think @Hatsy Rei means SoloLearn, not the C++ Standard Library :)
3rd Feb 2017, 5:47 PM
Jafca
Jafca - avatar
+ 7
@~datell There is a function, sizeof() which will be able to handle the problem without so much fuzz.
1st Feb 2017, 7:07 AM
Hatsy Rei
Hatsy Rei - avatar
+ 7
Derived from my previous post, this is an even simpler version which doesn't require the use of sizeof() lol. #include <iostream> using namespace std; int y; void func(); int main() { cin >> y; int array[y]; func(); return 0; } void func() { cout << y; }
1st Feb 2017, 8:12 AM
Hatsy Rei
Hatsy Rei - avatar
+ 5
thank you everyone for your answers, specially you Hatsy Rei, I had forgotten about passing values through parameters
1st Feb 2017, 1:09 PM
Frederick Lopez
Frederick Lopez - avatar
+ 4
Maybe replace x++ with ++x. It could make your code that tiny bit faster 😎
1st Feb 2017, 2:57 AM
Jafca
Jafca - avatar
+ 1
The post that got so heavily upvotes is a good example. What do you do, if your array doesn't have 8 entries but a variable number that depends on the users input. How long will you loop? The user will have to specify the length of the array and you have to pass the length as a parameter in your function. This is pure C style and nothing you have to use in C++ sonce there are much superior things available.
1st Feb 2017, 7:05 AM
~datell
+ 1
@Hatsy Rei: Nope! You can get the size of an array with sizeof(array)/sizeof(array[0]). But this only works within one function. Try it out! Create a function test(int array[]) and pass an array try to get its size in your function test. This doesn't work. The reason is that not really an array is passed but a pointer to the array[0] that points towards the beginn of the allocated memory section. EDIT: Maybe this article could be help you guys. Bjarne Stoustrup who invented C++ on C style arrays: http://www.stroustrup.com/bs_faq2.html#arrays
1st Feb 2017, 7:10 AM
~datell
+ 1
@Jafca: Oh haha I think you are right! Sorry then!
3rd Feb 2017, 8:35 PM
~datell
0
1. Use english names! This is a must in programming! 2. Although even SoloLearn does it, it is acutally a bad habbit to use using namespace. If you work in bigger projects this can heavily confuse you and others. Better just type the 5 more letters std:: 3. Avoid using C arrays! They are evil since they are not aware of their own size! Better use std::vector (#include <vector>) or if you statically now the size at the initialization point use std::array (#include <array>). Google these, not a single serious C++ developer will use C arrays, maybe in very very low level applications but in no other case.
1st Feb 2017, 7:02 AM
~datell
0
@Hatsy Rei: Sorry but you are again wrong. std::vector is part of the C++ SL (see here: http://www.cplusplus.com/reference/) and NOT of the STL.
3rd Feb 2017, 5:42 PM
~datell