A commentary on my technical exploits

Monthly Archives: November 2012

Chapter 6 brings us to branching statements, also know as if and else statements. We are also introduced to the cctype library which makes light work of some basic character operations. Exercise 1 ask us to accept keyboard input to @, not to display numbers, convert uppercase to lowercase and vice versa. One other thing you will notice this time is I have not pulled in the entire standard library, I except use it in a case by case basis. This can help solve non-obvious ambiguity errors in our later problems. See my source below for a simple solution:

1. Write a program that reads keyboard input to the @ symbol and that echoes the inputexcept for digits, converting each uppercase character to lowercase, and vice versa.(Don’t forget the cctype family.)

This is an interesting program that takes a second to think about. The issue here is logic. Basically, we gather the number of rows we want and compare it in our first for statement. It’s going to be greater then zero so we enter our loop and see another for statement. If ‘d” is still less than rows – less, we output a decimal point. we then enter out next for statement which looks at integer “a” and compares our “less” value against it. The resulting number is how many asterisk are outputted after out decimal points. We then increment “less” until we reach our rows value, as checked in our first for statement.

9. Write a program using nested loops that asks the user to enter a value for the number ofrows to display. It should then display that many rows of asterisks, with one asterisk inthe first row, two in the second row, and so on. For each row, the asterisks are precededby the number of periods needed to make all the rows display a total number of charactersequal to the number of rows. A sample run would look like this:Enter number of rows: 5….*…**..***.*********

With some slight modifications we can breeze through exercise 8. The instructions require us to use the natural <string> header for C++ string class objects. The key point here is that using string is simply just easier. Why you ask? Because we can now use ‘!=’ and other comparative operators to make our comparisons. See my solution below:

8. Write a program that matches the description of the program in Programming Exercise7, but use a string class object instead of an array. Include the string header file anduse a relational operator to make the comparison test.

The trick to exercise 7 is that we must setup and use C’s strcmp function correctly. The problem with C++ is that when using C++’s string compare functions, you are really just comparing address’s, not the string’s themselves. To get around this we use <cstring> along with strcmp() to compare to strings. If two string arguments in strcmp() are identical, strcmp() returns a 0. So, we look for an instance when it is not zero. You could technically still use <string> here and get a good solution, but you may run into issues in other scenarios . Here is my solution below:

7. Write a program that uses an array of char and a loop to read one word at a time untilthe word done is entered. The program should then report the number of words entered(not counting done). A sample run could look like this:Enter words (to stop, type the word done):anteater birthday category dumpsterenvy finagle geometry done for sureYou entered a total of 7 words.You should include the cstring header file and use the strcmp() function to make thecomparison test.

Exercise 6 ask us to create a struct. We have already made structs that are very similar to this (see ch4 exercise 9). We employ the new keyword and create a point to a dynamic array. This way, we recycle the same struct, but change the data within it for different cars. See my solution below:

6. Design a structure called car that holds the following information about an automobile:its make, as a string in a character array or in a string object, and the year it was built,as an integer. Write a program that asks the user how many cars to catalog. The programshould then use new to create a dynamic array of that many car structures. Next, itshould prompt the user to input the make (which might consist of more than one word)and year information for each structure. Note that this requires some care because italternates reading strings with numeric data (see Chapter 4). Finally, it should displaythe contents of each structure. A sample run should look something like the following:

How many cars do you wish to catalog? 2Car #1:Please enter the make: Hudson HornetPlease enter the year made: 1952Car #2:Please enter the make: KaiserPlease enter the year made: 1951Here is your collection:1952 Hudson Hornet1951 Kaiser

Exercise 5 is a remake of exercise 4, except this time we introduce a two dimensional array into our loops. The purpose of this is to fill it first with years then months. This way, the program will iterate through 12 months for 3 years. See the source below for the solution.

5. Do Programming Exercise 4, but use a two-dimensional array to store input for 3 years
of monthly sales. Report the total sales for each individual year and for the combined
years.

Exercise 4 wants us to loop through the months in a year and ask how many books we sold for a each month, then sum the total. I went with a string array initialized to the months. A simple for loop takes us through the year. Here is my solution:

4. You sell the book C++ for Fools. Write a program that has you enter a year’s worth ofmonthly sales (in terms of number of books, not of money). The program should use aloop to prompt you by month, using an array of char * (or an array of string objects, ifyou prefer) initialized to the month strings and storing the input data in an array of int.Then, the program should find the sum of the array contents and report the total salesfor the year.