APS 105 — Computer Fundamentals
Lab 5: Functions, Logic, and Debugging
Winter 2021
The goal of this laboratory is to practice the material on functions. You are to write one C program that
consists of a main() and several functions. The program displays the Pascal’s triangle as explained in the
following section.
Preparation
Read through this entire document carefully, and do the work to create the programs that are described
below. You are encouraged to:
▪ Read the class bulletin board on Piazza, to see if others had similar problems. If you do not see
anything helpful there, ask a question. Do not ask for, or ever give a full or partial solution to the
lab assignment.
▪ Ask for assistance from your lab/tutorial TAs.
▪ Attend and ask questions during the plenary sessions.
Notes:
In the sample output examples that follow:
o The text stands for the user pressing the enter key on the keyboard. On some
keyboards, the enter key may be labeled return.
Throughout this lab, there is a single space after the colon (:) in each output line.
Pascal’s Triangle
In a file called Lab5.c, write a C function named “triangle” that outputs Pascal’s triangle (for example) as
follows:
2
In general the Pascal’s triangle can be represented as:
0C0
1C1 1C0
2C2 2C1 2C0
3C3 3C2 3C1 3C0
4C4 4C3 4C2 4C1 4C0
...
where nCr represents how many ways there are to choose r from n, not counting duplicates.
In mathematics, it is usually presented as . The formula used to calculate nCr can be written as:
𝑛𝑪𝑟 =
𝑛!
𝑟! (𝑛 − 𝑟)!
where 𝑛! is the factorial of 𝑛.
The function triangle:
Is called by value where exactly one parameter (the number of rows of the Pascal’s triangle) is
passed to it.
Returns void (i.e. no value).
Prints out the Pascal’s triangle to the standard output.
Employs two other functions namely:
int choose(int n, int r);
That chooses r from n
int factorial(int n);
That calculates factorial of 𝑛.
Note: You are allowed to use any other function as need be.
You are required to provide a complete C program by writing the code for the main() function
Prompts user to supply the number of rows in the Pascal’s triangle.
Calls the function triangle such to display the Pascal’s triangle based on the number of rows
provided by the user.
Terminates the run of the program if the user supplies a negative value.
An example of the required output from your program is as follows:
3
4
Notes:
The number of the rows is limited to integers between 0 and 13 inclusive.
Automarker tests inclusively between 0 and 13.
If 0 then there are no triangles displayed.
If negative integer then program terminates.
The number displayed in the last column MUST be always displayed at the start of the line.
Carefully calculate the spaces used between the numbers so that the numbers are properly
aligned across rows.
Use of a function spaces() that deals with spacing is recommended.
Grading by TA and Submitting Your Program for Auto-Marking
There are a total of 10 marks available in this lab, marked in two different ways:
1. By your TA, for 4 marks out of 10. Once you are ready, show your program to your TA so that
we can mark your program for style, and to ask you a few questions to test your understanding of
what is happening. Programs with good style are:
Clear comments that describe what is happening in the program.
Good choices for variable names that indicate their purpose. Please adopt the naming
convention where if you have a variable that is described by multiple words, user lower
case for the first letter of the first word, and Upper case for all subsequent words e.g.
inputCode.
Properly indented code.
Proper use of named constants, rather than putting constants (such as 125) directly into
the code.
The TA will also ask you some questions to be sure that you understand the underlying concepts
being exercised in this lab.
2. By an auto-marking program for 6 marks out of 10. You must submit all of your program files
through the ECF computers for marking. We will use a software program to compile and run your
program, and test it with different inputs. Long before you submit your program for marking, you
should run the exercise program that compiles and runs your program and gives it sample inputs,
and checks that the outputs are correct. You should run the following command:
/share/copy/aps105s/lab5/exercise
within the directory that contains both your solution programs. This program will look for the files
comprising Lab5 in your directory, compile them, and run them on some of the test cases that will be used
to mark your program automatically later. If there is anything wrong, the exercise program will report this
to you, so read its output carefully, and fix the errors that it reports.
IMPORTANT: YOU WILL HAVE TO COPY ALL OF YOUR FILES TO BE IN THE SAME
FOLDER/DIRECTORY WHERE YOU WILL RUN THE SUBMIT COMMAND.
3. Once you have determined that your program is as correct as you can make it, then you must
submit your program for auto-marking. This must be done by the end of your lab period as that is
the due time. To do so, go into the directory containing your solution files and type the following
command:
/share/copy/aps105s/lab5/submit
5
This command will re-run the exercise program to check that everything looks fine. If it finds a
problem, it will ask you if you are sure that you want to submit. Note that you may submit your
work as many times as you want prior to the deadline; only the most recent submission is marked.
All files to be submitted as solutions to the lab must be within the same directory, and the
submission script must be run also from that directory via the command line. The exercise
program (and the marker program that you will run after the final deadline) will be looking for
the exact letters as described in the output in this handout, including the capitalization. When you
test your program using the exercise program, you will see that it is expecting the output to be
exactly this, so you will have to use it to see if you have this output correct.
Important Note: You must submit your lab by 11:59 p.m. after the end of your assigned lab
period. Late submissions will not be accepted, and you will receive a grade of zero.
You can also check to see if what you think you have submitted is actually there, for peace of
mind, using the following command:
/share/copy/aps105s/lab5/viewsubmitted
This command will download into the directory you run it in, a copy of all of the files that have
been submitted. If you already have files of that same name in your directory, these files will be
renamed with a number added to the end of the filename.
After the Final Deadline Obtaining Automark
Briefly after all lab sections have finished you will be able to run the automarker to determine the
automarked fraction of your grade on the code you have submitted. To do so, run the following
command:
/share/copy/aps105s/lab5/marker00
This command will compile and run your code, and test it with all of the test cases used to determine the
automarked grade. You will be able to see those test cases output and what went right or wrong.
Good Luck!