Wednesday, September 30, 2009

Algorthims

Year 2 started out 5 weeks ago with an algorithms class. Luckily enough, it still uses C++, which I still find to be the most comfortable with.

The teacher is a hard ass, yet good. He is one of those teachers that will yell at the class for not being quick enough, or giving answers that he thinks are beneath us. At the same time, he is the most respectful and encouraging teacher; he can give a student hell in one breath, then in the next, heap raise on the same student for showing effort.

The first two assignments covered basics like flowcharting and array subscripts. The algorithms teacher is more concerned at this point, with us producing clean code; appropriate comments, and a readable, consistent style.

It is a class about thinking, and less about syntax.

He is a very old school programmer, using ideas from K & R. For example, right now we are doing an excercise in C-Strings, and passing 2-D arrays to functions. This is also bundled with an program that has different sorting algorithms.

An example of the code I wrote today:

#include <iostream>
#include <iomanip> //for setw function to format output
using namespace std;

const char title1[] = { "Unsorted Array Data" };
const char titleWt[] = { "Weights" };
const char titleName[] = { "Names" };

const int L_MAX = 100; //maximum number of name strings in array
const int N_MAX = 10; //maximum size of each name string
const int L_SIZE = 20; //number of actual name strings in array


// Function Prototypes -------------------------------------------------------------

void OutList( const char[], const char[] ,const char[], char[][N_MAX], int[] );

// ---------------------------------------------------------------------------------

int main()
{
//array of name strings
char names[L_MAX][N_MAX] = { "wendy", "ellen", "freddy", "tom", "susan",
"dick", "harry", "aloysius", "zelda", "sammy",
"mary", "hortense", "georgie", "ada", "daisy",
"paula", "alexander", "louis", "fiona", "bessie" };

//array of corresponding weights for those names
int wt[L_SIZE] = { 120, 115, 195, 235, 138, 177, 163, 150, 128, 142,
118, 134, 255, 140, 121, 108, 170, 225, 132, 148 };

OutList( title1, titleName, titleWt, names, wt ); // print raw data


return 0;
}

void OutList( const char title[],const char nameTitle[], const char wtTitle[], char name[][N_MAX], int wt[] )
{
// prints the unsorted array of names / weights

cout << title << endl << endl;
cout << left << setw(12) << nameTitle << left << setw(12) << wtTitle << endl << endl;

for ( int count = 0; count < L_SIZE; count++ )
cout << left << setw(12) << name[count] << left << setw(12) << wt[count] << endl;

system ( "pause" );

}

The function Outlist() is not my favourite I have ever written. There are too many arguments, it is too easy to get lost, which leads to debugging nughtmare. Three arguments should be the maximum. Thoughts on this?

What did me in with the last assignment, was not that my program did not work, in fact it worked perfectly, I did not comment my code properly. If any one has any suggestions on how I should comment code in a way tht would please an old school programmer, let me know.




Powered by ScribeFire.

No comments:

Post a Comment