CS 3050, Spring 2006
Programming Assignment 1
Due Friday, March 3, 2006

Program: Longest Line

The goal of this assignment is to become more familiar with writing C++ programs, while applying some of the file processing operations we have seen in class.

You will write a C++ program that read an input file(s) in text (ASCII), finds the longest line in the file, prints the length and contents of the longest line to the screen and writes it to a text (ASCII) file.

Your program should be well documented and written in good style. To document the program, write comments explaining what is done in the following lines and add comments at the end of certain lines explaining what has been done on that line. For each function or method add a full explanation before it, explaining the purpose and what the parameters represent. For each class created, add an explanation before it. Good style includes good documentation, choice of clear variable names, and good program organization and design.

Lines in the file will be determined by newline ('\n') characters.

Command line arguments:
The input file (or files) for your program will be given on the command line. The main mechanism to do this involves the use of the following arguments in the main program:
int main(int argc, char* argv[])
(You may want to look up information on these parameters in your favorite C++ book or on the web.)

Structure of you program:
Your submission will consist of four files:

Testing your program:
Before submitting your program you should test it on a variety of files, including but not limited to:
The results of these tests should be reflected in your script.

Submitting your program:
Your files will be uploaded though our automated submission system:


Go to this web site and login using your cs login name and password. Select CS3050 and Lab1, follow the instructions to upload your programs. (Note that the testing/compiling module may not be functional at this time, so I will not be providing a compile line for you.)
Should you have any difficulties with the submission system, please alert me as soon as possible. If the submission system fails, email your files to me as attachments (mmartin@cs.csustan.edu).

Making a script (by Dr. Sarraille)
Making a Record of a Program Run: Now that you are sure the program is working correctly, let's do another test. This one will be "for the record." Enter "script p1.script" and wait until the computer writes a prompt on the screen again. (There may be a slight delay. The prompt you get now may be different than before.)

Here's an explanation of what you just did: The "script" command turns on a program that makes a record of whatever appears on the screen. The command you entered was "script p1.script" so the record the script program makes will be a file called p1.script.

Enter "a.out" and see your "Hello World!" message written to the screen again. Now enter "exit" to turn off the scripting program. From the time you entered "script p1.script" to the time you entered "exit", all things that were written on the screen were also recorded in the file called p1.script.

Enter clear to clear the screen. Now enter "cat p1.script". This causes the computer to type the contents of the script file you made. It should look something like this:

Script started on Sat Aug 21 19:05:11 2004
jdoe@vega:(~) a.out
Hello World!
jdoe@vega:(~) exit
script done on Sat Aug 21 19:17:37 2004
Note that the script file (named p1.script) starts and ends with "timestamps" that tell when the script was started, and when it was completed. In between it reproduces what you typed.

Now enter "jove p1.script" so you can look at the file with the JOVE editor. You see your script. You also see "weird" characters in the script like ^M at the end of each line, and maybe some other things. These characters are an undesirable side-effect of the way the scripting program interacts with special characters that handle the terminal display. The weird characters are sometimes visible, and sometimes not, depending on just how you try to display your script file. The characters were not visible when you displayed p1.script with "cat," but they were visible when you used JOVE. Do a C-x C-c command to exit JOVE.

When you turn in a real programming assignment, you will be sending me the source code, plus a script similar to the one you just made. The script will be a record that will show me that you did the right kind of testing of your program.

I require you to run your script through a filter before you send it to me. It's a way to get rid of most of the weird characters, so the script will be more readable. It is easy to do, no matter how big the script is.

Here's how: Enter "cat p1.script | col -b > temp". This command pipes the script file to the input of the command "col -b > temp", which filters out some of the weird characters and writes the output to a file named temp. Now the temp file is the filtered version of the script. Enter "mv temp p1.script" to replace the script file with the new filtered version. Now enter "jove p1.script" again. See how the file has been cleaned up? Good. Exit JOVE again by doing a C-x C-c command.