Blob Finder implementation in C++ Assignment - 4 COP3010 Programming I in C/C++


This assignment will not be very much code but can be very complex in execution. There are many places where a small error can not only be catastrophic but be very difficult to detect. In this assignment you will be working with reading in text files into multi-dimensional arrays, passing 2d arrays as parameters and using recursive functions.

You will write a program to read in a file and find out how many groupings (blobs) of characters there are in the file. The image below is a sample input file. Note that it contains 6 groupings of characters or blobs.

A character is part of a grouping or blob if it touches another character in the grouping on 1 of 8 positions around it. Notice that one of the groupings or blobs is located inside of another.

You will open a file called blob.txt which will be provided to you. The file will contain exactly 20 records each of which is exactly 70 characters long. Your program can make the assumption that both the file name and size of the file (rows and columns) are exact. The characters will either be a space (blank ) or have an upper case X.

Programming Specifications: Here are the lists of tasks and specifications.

  1. Read in a file into a 2-dimensional array of size 22 rows and 72 columns.

  2. Leave the 1st column and last column in the array blank. I.E. start populating data in Column 1.

  3. Leave the 1st row and last row of the array blank. I.E. start populating data in Row 1

  4. You need only have one function in your program and that is the recursive function that finds and clears out each grouping or blob.

  5. Your only output is the correct number of blobs as show in the sample output.

Design Considerations:

  1. The text file must be read into a 2-d array so that it can be searched. The first and last rows and columns of the 2-d array should be blank to avoid having to check boundaries of the array during processing.

  2. Once you find a character that is non-blank you should set it to a space so it is not detected again. If you choose to do the extra credit work, once you have printed out the text file or 2d array there is no reason to keep it whole.

  3. You must hard code the file name to “blob.txt”.

General Requirements:

  1. No global variables, other than constants and type definitions!

  2. Use the const qualifier on member functions wherever it is appropriate.

  3. Your main routine should just mainly handle the calling of functions and basic program structure.

  4. You will need to use the <iostream library for output. You may use the <iomanip library for formatting your output if you wish.

  5. When you write source code, it should be readable and well-documented.

  6. You must have prototypes for all of your functions.

  7. You may use any sorting technique you wish but the simplest (exchange or bubble sort) is all that is required.

  8. The size of the array must match exactly the number of records in the file. No more no less.

Grading Criteria:

  1. The program compiles. If the program does not compile no further grading can be accomplished. Programs that do not compile will receive a zero.

  2. (25 Points) The program executes without exception and produces output. The grading of the output cannot be accomplished unless the program executes.

  3. (25 Points) The program produces the correct output.

  4. (25 Points) The program specifications are followed.

  5. (10 Points)The program is documented (commented) properly.

  6. (5 Points)Use constants when values are not to be changed

  7. (5 Points)Use proper indentation

  8. (5 Points)Use good naming standards

Powered by