By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,194 Members | 811 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,194 IT Pros & Developers. It's quick & easy.

Stroustrup exercise 7 section 5.9 (using arrays)

P: n/a
i do not have any problem here. i solved the problem but i wanted to
know the views of you. please look at it from a newbie's perspective:

problem: define a table with names of months of the year & the number
of days in each month. write out that table. do this using: 2 arrays, 1
for months & 1 for days.

this is the solution i have created:

#include <iostream>
#include <string>

const int arr_size = 12;

std::string arr_mon[arr_size] =
{"jan", "feb", "mar", "apr", "may", "june", "july", "aug", "sep",
"oct", "nov", "dec"};

int arr_days[arr_size] =
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
30, 31};

void print_2_arrays(std::string month[], int days[])
{
for(int i=0; i < arr_size; ++i)
{
std::cout << month[i]
<< "\t"
<< days[i] <<"\n";
}
std::cout << "=========================================\n";
}
int main() {
print_2_arrays(arr_mon, arr_days);
}

Nov 8 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
arnuld wrote:
i do not have any problem here. i solved the problem but i wanted to
know the views of you. please look at it from a newbie's perspective:

problem: define a table with names of months of the year & the number
of days in each month. write out that table. do this using: 2 arrays, 1
for months & 1 for days.

this is the solution i have created:

#include <iostream>
#include <string>

const int arr_size = 12;

std::string arr_mon[arr_size] =
{"jan", "feb", "mar", "apr", "may", "june", "july", "aug", "sep",
"oct", "nov", "dec"};

int arr_days[arr_size] =
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
30, 31};

void print_2_arrays(std::string month[], int days[])
{
for(int i=0; i < arr_size; ++i)
{
std::cout << month[i]
<< "\t"
<< days[i] <<"\n";
}
std::cout << "=========================================\n";
}
int main() {
print_2_arrays(arr_mon, arr_days);
}
It looks fine, but I would tweak it thusly:

1. Minimize the scope of both of your arrays by putting them in main()
or at the very least in an anonymous namespace. You should always try
to put variables in the minimum scope required because it means you
have less to worry about when trying to figure out what some piece of
code does. (As it stands, your main() doesn't even need to pass the
arrays to the print function since the latter has access to globals
also.)

2. Make both arrays (and your function parameters) constant. The
general rule here is to make everything constant unless it needs to be
modified. This also helps one to more easily understand code because by
inspection, you know that such-and-such variable won't change. (See
also
http://www.parashift.com/c++-faq-lit....html#faq-18.1.)

Cheers! --M

Nov 8 '06 #2

P: n/a
It looks fine, but I would tweak it thusly:

ok, go ahead ;-)
1. Minimize the scope of both of your arrays by putting them in main()
or at the very least in an anonymous namespace. You should always try
to put variables in the minimum scope required because it means you
have less to worry about when trying to figure out what some piece of
code does. (As it stands, your main() doesn't even need to pass the
arrays to the print function since the latter has access to globals
also.)

2. Make both arrays (and your function parameters) constant. The
general rule here is to make everything constant unless it needs to be
modified. This also helps one to more easily understand code because by
inspection, you know that such-and-such variable won't change.
grabbed them
(See also
http://www.parashift.com/c++-faq-lit....html#faq-18.1.)
looking into it.
thanks a lot

Nov 8 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.