CptS 122 – Data Structures                                                                                             

 

Programming Assignment 1: Fun with Arrays, Strings, and Pointers

 

Assigned: Friday, August 24, 2012

Due: Wednesday, September 5, 2012 by midnight

 

I. Learner Objectives:

 

At the conclusion of this programming assignment, participants should be able to:

 

II. Prerequisites:

 

Before starting this programming assignment, participants should be able to:

 

III. Overview & Requirements:

For each of the following problems create a separate Microsoft VS 2008 project. Within each project you must have at least one header file (.h) and two source files (.c). Before you turn in this assignment, be sure to place each project folder into a single <your last name>_pa1 folder.

 

1. Write a C program that sorts strings into descending or ascending order (determined by the user of the program). For this program you must declare an array of pointers to the strings, and perform the sorting without using strcpy ( ). Hence, you must manipulate the pointers to the strings only! Below is a pseudocode algorithm for bubble sort:

 

1.      get values for n and the n list items (n represents the number of records in the file, list is an array of records)

2.      set the marker U for the unsorted section at the end of the list (U is an integer index value)

3.      while the unsorted section has more than one element do steps 4 through 8

4.            set the current element marker C at the second element of the list

            (C is an integer index value)

              5.         while C has not passed U do steps 6 and 7

              6.                if the item at position C is less than the item to its left then

                                        exchange these two items

              7.                move C to the right one position

              8.         move U left one position

              9.   stop

 

You must develop your own program driver to illustrate that your sorting algorithm works!

 

2. Write a C program that determines if a string is a palindrome. Before your program makes the palindrome determination, you must remove all punctuation characters from the string. Recall a palindrome is a sequence of characters that can be read the same way in either direction. “Madam I’m Adam!” is an example of a palindrome (recall punctuation is removed). Once again, you must develop your own program driver to illustrate that your program works. You may use any library functions you wish.

 

3. Write a C program that encrypts and decrypts strings using the Caesar Shift Cipher. The shift value must be an integer, but may be positive or negative. If the shift value is 4, then an ‘A’ becomes ‘E’. If the shift value is -4, then ‘A’ becomes ‘W’. Note, the plaintext messages are encrypted using alphabetic characters only. Also, all characters in the messages must first be converted to uppercase before encrypting or decrypting them. Develop your own program driver to illustrate that your program works. You may use any library functions you wish.

 

IV. Submitting Assignments:

 

  1. Using the Angel tool https://lms.wsu.edu submit your assignment to your TA. You will "drop" your solution into the provided "Homework Submissions" Drop Box under the "Lessons" tab. You must upload your solutions as <your last name>_pa1.zip by the due date and time.
  2. Your .zip file should contain multiple project workspaces. Each project must have at least one header file (a .h file), two C source files (which must be .c files), and project workspace. Delete the debug folder before you zip your project folders.
  3. Your projects must build properly. The most points an assignment can receive if it does not build properly is 50 out of 100.

 

V. Grading Guidelines:

 

This assignment is worth 100 points. Your assignment will be evaluated based on a successful compilation and adherence to the program requirements. We will grade according to the following criteria: