CISC220 F2023 Lab1

From class_wiki
Revision as of 13:59, 30 August 2023 by Cer (talk | contribs) (2. C++ programming exercises)
Jump to: navigation, search

Lab #1

1. Getting started (1 point)

  • Get your programming environment figured out following these set-up instructions. Directions below are for Linux/Unix.
  • Download the class programs cplusplus_1.tar to the computer you are working on and untar it (if it's unfamiliar, Google "tar command" or try "man tar" in Unix).
  • Make a directory called <Your Name>_Lab1 and copy the wordbyword subdirectory from the cplusplus_1 directory into it (cp wordbyword/* <Your Name>_Lab1/).
  • Verify that you can compile wordbyword by typing "make" in that directory.
    • If this doesn't work, you probably need to add g++, etc. to your path.
    • Your shell must be "bash" (test with echo $SHELL). Either type "bash" after logging in or change your default shell with chsh
  • Run it: ./wordbyword test.txt. You should get a list of words in the file.
  • Show your workflow to a TA or the instructor for credit

2. C++ programming exercises

  • (2 points) Make a piglatin directory and copy the wordbyword main.cpp and Makefile into it. Change the executable name in the Makefile to piglatin. Now instead of just echoing the words that you read, write a function string piglatin(string s) which takes a normal word and returns a string with the "pig latin" form of that word according to a simplified version of these rules. In these rules, the first letter of the word is moved to the end if it is a consonant and "ay" is appended. For example, "happy" becomes "appyhay" and "duck" becomes "uckday". Consonant clusters are moved as a group: "friends" becomes "iendsfray" and "school" becomes "oolschay". If the first letter of the word is a vowel, just add "way" to the end of it. So "egg" becomes "eggway" and "awesome" becomes "awesomeway".
  • (2 points) Make a wordsearch directory. Now your program will read in two text files, first a rectangular character grid of unknown dimensions and second a list of words (one per line) to find in that grid. The words may be horizontal, vertical, or diagonal, backwards or forwards. The grid may have spaces in it; ignore case in both files. The output should be a per-line display of the word's first letter location by row,column (no whitespace, 0-based indexing, write -1,-1 if not found). At some point your program should have a dynamically-allocated 2-D array of chars (YOU MAY USE AI FOR THIS INTERMEDIATE STEP ONLY (NO STL/VECTORS)) that is then searched systematically. Two sample puzzles are given below:

3. Submission

  • Put a PDF file <Your Name>_README.pdf in <Your Name>_Lab1 explaining what OS and text editor/IDE you are using, as well as any AI tool citations/explanations that are required per the syllabus. Please also add a section, if necessary, noting any limitations or issues of your code, as well as your interpretation of any ambiguities in the instructions.
  • Create a single tar/zip/rar file out of the top-level and all subdirectories. This archive file should be named <Your Last Name>_Lab1.tar (or .zip or .rar, etc.). If you didn't follow the Unix/Linux directions above but used Visual Studio/Xcode or something like that, please do NOT submit files associated with those compilers -- only C++ code and header files, please.
  • Submit it in Canvas