Description
CptS 121 Programming Assignment 1: Equation Evaluator
I. Learner Objectives: At the conclusion of this programming assignment, participants should be able to: Analyze a basic set of requirements for a problem and derive logical solutions to them Declare variables Apply C data types and associated mathematical operators Comment a program according to class standards Logically order sequential C statements to solve small problems Compose a small C language program Compile a C program using Microsoft Visual Studio 2019 or 2022 Execute a program Create basic test cases for a program II. Prerequisites: Before starting this programming assignment, participants should be able to: Access Microsoft Visual Studio 2019 or 2022 Integrated Development Environment (IDE) Summarize topics from Hanly & Koffman Chapters 1 – 2 including: The steps of the software development method C language elements (preprocessor directives, reserved words, and standard identifiers) The standard C data types The general form of a high-level program III. Overview & Requirements: Write a C program that evaluates the equations provided below. All equations should be placed in a single project! The program must prompt the user for inputs to the equations and evaluate them based on the inputs. All variables on the right hand sides of the equations must be inputted by the user. All variables, except for the plaintext_character, encoded_character, offset, and variable a are floating-point values. The plaintext_character and encoded_character variables are characters, and the offset and a variable are integers. PI, G must be defined as a constant macros (#defined constants). Error checking is NOT required for your program. You do NOT need to check for faulty user input or dividing by zero. 1. Newton’s Second Law of Motion: force = mass * acceleration 2. Volume of a cylinder: volume_cylinder = PI * radius2 * height 3. Character encoding: encoded_character = offset + (plaintext_character – ‘a’) + ‘A’ (note: what happens if plaintext_character is lowercase?) 4. Gravity: force = G * mass1 * mass2 / distance2, where G is the gravitational constant with value 6.67 * 10-11 5. Resistive divider: vout = r2 / (r1 + r2) * vin 6. Distance between two points: distance = square root of ((x1 – x2)2 + (y1 – y2)2) (note: you will need to use sqrt ( ) out of ) 7. General equation: y = (89 / 27) – z * x + a / (a % 2) (recall: a is an integer; the 89 and 27 constants in the equation should be left as integers initially, but explicitly type-casted as floating-point values) IV. Expected Results: The following console window illustrates inputs and outputs that are appropriate for your program. Your program must display the results in a similar form as shown in the window. The window shows possible results, for the given input tests, for the first two equations only. Note: you will need to display the results for all of the equations! V. Submitting Assignments: 1. Using Canvas https://canvas.wsu.edu/, please submit your solution to the correct “Programming Assignments” (PA) folder. Your solution should be zipped into a .zip file with the name _PA1.zip and uploaded. To upload your solution, please navigate to your correct Canvas lab course space. Select the “Assignments” link in the main left menu bar. Navigate to the correct PA submission folder. Click the “Start Assignment” button. Click the “Upload File” button. Choose the appropriate .zip file with your solution. Finally, click the “Submit Assignment” button. 2. Your project should contain your C source file (which must be a .c file). 3. Your project must build properly. The most points an assignment can receive if it does not build properly is 65 out of 100. VI. 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: 5 pts for correct declaration of constant macros 35 pts for proper prompts and handling of input (5 pts/equation) 49 pts for correct calculation of results based on given inputs (7 pts/equation) 11 pts for adherence to proper programming style established for the class and comments
CptS 121 Programming Assignment 2: A Modular Approach to the Equation Evaluator
I. Learner Objectives: At the conclusion of this programming assignment, participants should be able to: Analyze a basic set of requirements and apply top-down design principles for a problem Customize and define C functions Apply the 3 file format: 1 header file and 2 source files Document and comment a modular C program according to class standards Implement guard code in a header file II. Prerequisites: Before starting this programming assignment, participants should be able to: Access Microsoft Visual Studio 2019 or 2022 Integrated Development Environment (IDE) Analyze a basic set of requirements for a problem Declare variables Apply C data types and associated mathematical operators Comment a program according to class standards Logically order sequential C statements to solve small problems Compose a small C language program Compile a C program using Microsoft Visual Studio 2019 or 2022 Execute a program Create basic test cases for a program Summarize topics from Hanly & Koffman Chapter 3 including: The 3 components to applying and defining a function include: function prototype, function definition, and function call What is a structure chart Top-down design principles What is an actual argument and formal parameter Differences between local and global variables and scope III. Overview & Requirements: For this program you will build a modular equation evaluator (you may want to start from your solution to programming assignment 1). Once again you will write a C program that evaluates the equations provided below. The program must prompt the user for inputs to the equations and evaluate them based on the inputs. All variables on the right hand sides of the equations must be inputted by the user. All variables, except for the plaintext_character, encoded_character, offset, and variable a are floating-point values. The plaintext_character and encoded_character variables are characters, and the offset and a variables are integers. PI, G must be defined as a constant macro (#defined constants). Error checking is not required for your program. You do NOT need to check for faulty user input or dividing by zero. 1. Newton’s Second Law of Motion: force = mass * acceleration 2. Volume of a cylinder: volume_cylinder = PI * radius2 * height 3. Character encoding: encoded_character = offset + (plaintext_character – ‘a’) + ‘A’ (note: what happens if plaintext_character is lowercase?) 4. Gravity: force = G * mass1 * mass2 / distance2, where G is the gravitational constant with value 6.67 * 10-11 5. Resistive divider: vout = r2 / (r1 + r2) * vin 6. Distance between two points: distance = square root of ((x1 – x2)2 + (y1 – y2)2) (note: you will need to use sqrt ( ) out of ) 7. General equation: y = (89 / 27) – z * x + a / (a % 2) (recall: a is an integer; the 89 and 27 constants in the equation should be left as integers initially, but explicitly type-casted as floating-point values) For this assignment you are required to define, at a minimum, the functions provided below (note: these are your required prototypes!): double calculate_newtons_2nd_law (double mass, double acceleration) double calculate_volume_cylinder (double radius, double height) char perform_character_encoding (char plaintext_character, int offset) A function for calculating the force (you must decide on a function name, return type, and parameter list!) A function for calculating the resistive divider (you must decide on a function name, return type, and parameter list!) A function for calculating the distance between two points (you must decide on a function name, return type, and parameter list!) A function for evaluating the general equation (you must decide on a function name, return type, and parameter list!) A function must be defined for each of the above function signatures. The task that is performed by each function corresponds directly to the equations defined under the Equations section. For example, the newtons_2nd_law ( ) function should evaluate the equation defined as force = mass * acceleration and return the resultant force, etc. You must print the results to the hundredths place. Also, the functions should not prompt the user for inputs. Prompts should be performed in main ( ) directly. For this assignment you will need to define three different files. One file, called a header file (.h) needs to be defined which will store all #includes, #defines, and function prototypes. Name the header file for this assignment equations.h. The second file that needs to be defined is just a C source file. This file should be named equations.c and include all function definitions for the above functions. The last file that should be defined is the main.c source file. This file will contain the main ( ) function or driver for the program. IV. Expected Results: The following console window illustrates inputs and outputs that are appropriate for your program. Your program must display the results in a similar form as shown in the window. The window shows possible results, for the given input tests, for the first two equations. Note: all results must be displayed to the hundredths place. This console window shows only a partial view of the results, you will need to display the results for all of the equations! V. Submitting Assignments: 1. Using Canvas https://canvas.wsu.edu/, please submit your solution to the correct “Programming Assignments” (PA) folder. Your solution should be zipped into a .zip file with the name _PA2.zip and uploaded. To upload your solution, please navigate to your correct Canvas lab course space. Select the “Assignments” link in the main left menu bar. Navigate to the correct PA submission folder. Click the “Start Assignment” button. Click the “Upload File” button. Choose the appropriate .zip file with your solution. Finally, click the “Submit Assignment” button. 2. Your project should contain one header file (a .h file), two C source files (which must be .c files), and project workspace. 3. Your project must build properly. The most points an assignment can receive if it does not build properly is 65 out of 100. VI. 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: 3 pts for correct declaration of constant macro(s) 14 pts for proper prompts and handling of input (2 pts/equation) 35 pts for correct calculation of results based on given inputs (5 pts/equation) 21 pts for appropriate functional decomposition or top-down design (3 pts/function) 15 pts for applying 3-file format (i.e. 1 .h and 2 .c files) (5 pts/file) 12 pts for adherence to proper programming style and comments (must have a comment block at the top of each file, a comment block above each function definition, and some inline comments) established for the class
CptS 121 Programming Assignment 3: Statistical Analysis of Student Records
I. Learner Objectives: At the conclusion of this programming assignment, participants should be able to: Open and close files Read, write to, and update files Manipulate file handles Apply standard library functions: fopen (), fclose (), fscanf (), and fprintf () Compose decision statements (“if” conditional statements) Create and utilize compound conditions II. Prerequisites: Before starting this programming assignment, participants should be able to: Analyze a basic set of requirements and apply top-down design principles for a problem Customize and define C functions Apply the 3 file format: 1 header file and 2 source files Document and comment a modular C program according to class standards Implement guard code in a header file Summarize topics from Hanly & Koffman Chapter 4 including: What is a selection or conditional statement? What is a compound condition? What is a Boolean expression? What is a flowchart? III. Overview & Requirements: Write a program that processes numbers, corresponding to student records read in from a file, and writes the required results to an output file (see main ( )). Your program should define the following functions: (5 pts) double read_double (FILE *infile) — Reads one double precision number from the input file. Note: You may assume that the file only contains real numbers. (5 pts) int read_integer (FILE *infile) – Reads one integer number from the input file. (5 pts) double calculate_sum (double number1, double number2, double number3, double number4, double number5) – Finds the sum of number1, number2, number3, number4, and number5 and returns the result. (5 pts) double calculate_mean (double sum, int number) – Determines the mean through the calculation sum / number and returns the result. You need to check to make sure that number is not 0. If it is 0 the function returns -1.0 (we will assume that we are calculating the mean of positive numbers), otherwise it returns the mean. (5 pts) double calculate_deviation (double number, double mean) – Determines the deviation of number from the mean and returns the result. The deviation may be calculated as number – mean. (10 pts) double calculate_variance (double deviation1, double deviation2, double deviation3, double deviation4, double deviation5, int number) – Determines the variance through the calculation: ((deviation1)^2 + (deviation2)^2 + (deviation3)^2 + (deviation4)^2 + (deviation5)^2) / number and returns the result. Hint: you may call your calculate_mean ( ) function to determine the result. (5 pts) double calculate_standard_deviation (double variance) – Calculates the standard deviation as sqrt (variance) and returns the result. Recall that you may use the sqrt ( ) function that is found in math.h. (10 pts) double find_max (double number1, double number2, double number3, double number4, double number5) — Determines the maximum number out of the five input parameters passed into the function, returning the max. (10 pts) double find_min (double number1, double number2, double number3, double number4, double number5) — Determines the minimum number out of the five input parameters passed into the function, returning the min. (5 pts) void print_double (FILE *outfile, double number) — Prints a double precision number (to the hundredths place) to an output file. (20 pts) A main ( ) function that does the following (this is what the program does!!!): Opens an input file “input.dat” for reading; Opens an output file “output.dat” for writing; Reads five records from the input file (input.dat); You will need to use a combination of read_double ( ) and read_integer ( ) function calls here! Calculates the sum of the GPAs; Calculates the sum of the class standings; Calculates the sum of the ages; Calculates the mean of the GPAs, writing the result to the output file (output.dat); Calculates the mean of the class standings, writing the result to the output file (output.dat); Calculates the mean of the ages, writing the result to the output file (output.dat); Calculates the deviation of each GPA from the mean (Hint: need to call calculate_deviation ( ) 5 times) Calculates the variance of the GPAs Calculates the standard deviation of the GPAs, writing the result to the output file (output.dat); Determines the min of the GPAs, writing the result to the output file (output.dat); Determines the max of the GPAs, writing the result to the output file (output.dat); Closes the input and output files (i.e. input.dat and output.dat) Expected Input File Format (real numbers only): For this assignment you will be required to read five records from the “input.dat” file. Each record will have the following form: Student ID# (an 8 digit integer number) GPA (a floating-point value to the hundredths place) Class Standing (1 – 4, where 1 is a freshmen, 2 is a sophomore, 3 is a junior, and 4 is a senior –> all integers) Age (a floating-point value) Example data for 1 student record in the file could be as follows: 12345678 3.78 3 20.5 IV. Expected Results: The following sample session demonstrates how your program should work. Assuming input.dat stores the following records: 12345678 3.78 3 20.5 87654321 2.65 2 19.25 08651234 3.10 1 18.0 11112222 3.95 4 22.5 22223234 2.45 3 19.3333 Your program should write the following to output.dat: NOTE: you only need to output the numbers, the text is for demonstration purposes only. 3.19 — GPA Mean 2.60 — Class Standing Mean 19.92 — Age Mean 0.60 — GPA Standard Deviation 2.45 — GPA Min 3.95 — GPA Max V. Submitting Assignments: 1. Using Canvas https://canvas.wsu.edu/, please submit your solution to the correct “Programming Assignments” (PA) folder. Your solution should be zipped into a .zip file with the name _PA3.zip and uploaded. To upload your solution, please navigate to your correct Canvas lab course space. Select the “Assignments” link in the main left menu bar. Navigate to the correct PA submission folder. Click the “Start Assignment” button. Click the “Upload File” button. Choose the appropriate .zip file with your solution. Finally, click the “Submit Assignment” button. 2. Your .zip file should contain your one header file (a .h file), two C source files (which must be .c files), and project workspace. Delete the debug folders and/or x64 folders before you zip the project folder. 3. Your project must build properly. The most points an assignment can receive if it does not build properly is 65 out of 100. VI. 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: 85 pts for adherence to function definitions described above. Please see the individual points, for each function, above. 15 pts for adherence to proper programming style established for the class and comments
CptS 121 Programming Assignment 4: A Game of Chance “Craps”
I. Learner Objectives: At the conclusion of this programming assignment, participants should be able to: Apply repetition structures within an algorithm Construct while (), for (), or do-while () loops in C Compose C programs consisting of sequential, conditional, and iterative statements Eliminate redundancy within a program by applying loops and functions Create structure charts for a given problem Determine an appropriate functional decomposition or top-down design from a structure chart Generate random numbers for use within a C program II. Prerequisites: Before starting this programming assignment, participants should be able to: Analyze a basic set of requirements and apply top-down design principles for a problem Customize and define C functions Apply the 3 file format: 1 header file and 2 source files Open and close files Read, write to, and update files Manipulate file handles Apply standard library functions: fopen (), fclose (), fscanf (), and fprintf () Compose decision statements (“if” conditional statements) Create and utilize compound conditions Summarize topics from Hanly & Koffman Chapter 4 & 5 including: What are counting, conditional, sentinel-controlled, flag-controlled, and end file-controlled loops What are while (), do-while (), and for () loops What is a selection or conditional statement What is a compound condition What is a Boolean expression What is a flowchart III. Overview & Requirements: The following description has been adopted from Deitel & Deitel. One of the most popular games of chance is a dice game called “craps,” which is played in casinos and back alleys throughout the world. The rules of the game are straightforward: A player rolls two dice. Each die has six faces. These faces contain 1, 2, 3, 4, 5, and 6 spots. After the dice have come to rest, the sum of the spots on the two upward faces is calculated. If the sum is 7 or 11 on the first throw, the player wins. If the sum is 2, 3, or 12 on the first throw (called “craps”), the player loses (i.e. the “house” wins). If the sum is 4, 5, 6, 8, 9, or 10 on the first throw, then the sum becomes the player’s “point.” To win, you must continue rolling the dice until you “make your point.” The player loses by rolling a 7 before making the point. Write a program that implements a craps game according to the above rules. The game should allow for wagering. This means that you need to prompt that user for an initial bank balance from which wagers will be added or subtracted. Before each roll prompt the user for a wager. Once a game is lost or won, the bank balance should be adjusted. As the game progresses, print various messages to create some “chatter” such as, “Sorry, you busted!”, or “Oh, you’re going for broke, huh?”, or “Aw cmon, take a chance!”, or “You’re up big, now’s the time to cash in your chips!” Use the below functions to help you get started! You may define more than the ones suggested or define all of your own functions if you wish! (5 pts) void print_game_rules (void) — Prints out the rules of the game of “craps”. (5 pts) double get_bank_balance (void) – Prompts the player for an initial bank balance from which wagering will be added or subtracted. The player entered bank balance (in dollars, i.e. $100.00) is returned. (5 pts) double get_wager_amount (void) – Prompts the player for a wager on a particular roll. The wager is returned. (5 pts) int check_wager_amount (double wager, double balance) – Checks to see if the wager is within the limits of the player’s available balance. If the wager exceeds the player’s allowable balance, then 0 is returned; otherwise 1 is returned. (5 pts) int roll_die (void) – Rolls one die. This function should randomly generate a value between 1 and 6, inclusively. Returns the value of the die. (5 pts) int calculate_sum_dice (int die1_value, int die2_value) – Sums together the values of the two dice and returns the result. Note: this result may become the player’s point in future rolls. (10 pts) int is_win_loss_or_point (int sum_dice) – Determines the result of the first dice roll. If the sum is 7 or 11 on the roll, the player wins and 1 is returned. If the sum is 2, 3, or 12 on the first throw (called “craps”), the player loses (i.e. the “house” wins) and 0 is returned. If the sum is 4, 5, 6, 8, 9, or 10 on the first throw, then the sum becomes the player’s “point” and -1 is returned. (10 pts) int is_point_loss_or_neither (int sum_dice, int point_value) – Determines the result of any successive roll after the first roll. If the sum of the roll is the point_value, then 1 is returned. If the sum of the roll is a 7, then 0 is returned. Otherwise, -1 is returned. (5 pts) double adjust_bank_balance (double bank_balance, double wager_amount, int add_or_subtract) – If add_or_subtract is 1, then the wager amount is added to the bank_balance. If add_or_subtract is 0, then the wager amount is subtracted from the bank_balance. Otherwise, the bank_balance remains the same. The bank_balance result is returned. (5 pts) void chatter_messages (int number_rolls, int win_loss_neither, double initial_bank_balance, double current_bank_balance) – Prints an appropriate message dependent on the number of rolls taken so far by the player, the current balance, and whether or not the player just won his roll. The parameter win_loss_neither indicates the result of the previous roll. (10 pts) Others? (20 pts) A main ( ) function that makes use of the above functions in order to play the game of craps as explained above. Note that you will most likely have a loop in your main ( ) function (or you could have another function that loops through the game play). Have a great time with this assignment! There is plenty of room for creativity! Note: I have not stated how you must display the game play! You may do as you wish! IV. Submitting Assignments: 1. Using Canvas https://canvas.wsu.edu/, please submit your solution to the correct “Programming Assignments” (PA) folder. Your solution should be zipped into a .zip file with the name _PA4.zip and uploaded. To upload your solution, please navigate to your correct Canvas lab course space. Select the “Assignments” link in the main left menu bar. Navigate to the correct PA submission folder. Click the “Start Assignment” button. Click the “Upload File” button. Choose the appropriate .zip file with your solution. Finally, click the “Submit Assignment” button. 2. Your .zip file should contain your one header file (a .h file), two C source files (which must be .c files), and project workspace. Delete the debug folders before you zip the project folder. 3. Your project must build properly. The most points an assignment can receive if it does not build properly is 65 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: 90 pts for adherence to functional decomposition stated above (see the individual points above) 10 pts for adherence to proper programming style established for the class and comments
CptS 121 Programming Assignment 5: The Game of Yahtzee
I. Learner Objectives: At the conclusion of this programming assignment, participants should be able to: Apply repetition structures within algorithms Construct while (), for (), or do-while () loops in C Apply pointers, output parameters, and/or arrays in C Compose C programs consisting of sequential, conditional, and iterative statements Eliminate redundancy within a program by applying loops and functions Create structure charts for a given problem Determine an appropriate functional decomposition or top-down design from a structure chart Generate random numbers for use within a C program II. Prerequisites: Before starting this programming assignment, participants should be able to: Analyze a basic set of requirements and apply top-down design principles for a problem Customize and define C functions Apply the 3-file format: 1 header file and 2 source files Open and close files Read, write to, and update files Apply standard library functions: fopen (), fclose (), fscanf (), and fprintf () Compose decision statements (“if” conditional statements) Create and utilize compound conditions Summarize topics from Hanly & Koffman Chapter 4 & 5 including: What are counting, conditional, sentinel-controlled, flag-controlled, and end file-controlled loops What are while (), do-while (), and for () loops What is a selection or conditional statement What is a compound condition What is a Boolean expression What is a flowchart III. Overview & Requirements: Develop and implement an interactive two-player Yahtzee game. Yahtzee is a dice game that was invented by Milton Bradley and Edwin S. Lowe in 1956. The challenge of the game is to outduel the other player by scoring the most points. Points are obtained by rolling five 6-sided die across thirteen rounds. During each round, each player may roll the dice up to three times to make one of the possible scoring combinations. Once a combination has been achieved by the player, it may not be used again in future rounds, except for the Yahtzee combination may be used as many times as the player makes the combination. Each scoring combination has different point totals. Some of these totals are achieved through the accumulation of points across rolls and some are obtained as fixed sequences of values. The Rules of Yahtzee: The scorecard used for Yahtzee is composed of two sections. A upper section and a lower section. A total of thirteen boxes or thirteen scoring combinations are divided amongst the sections. The upper section consists of boxes that are scored by summing the value of the dice matching the faces of the box. If a player rolls four 3’s, then the score placed in the 3’s box is the sum of the dice which is 12. Once a player has chosen to score a box, it may not be changed and the combination is no longer in play for future rounds. If the sum of the scores in the upper section is greater than or equal to 63, then 35 more points are added to the players overall score as a bonus. The lower section contains a number of poker like combinations. See the table provided below: Name Combination Score Three-ofa-kind Three dice with the same face Sum of all face values on the 5 dice Four-ofa-kind Four dice with the same face Sum of all face values on the 5 dice Full house One pair and a three-of-a-kind 25 Small straight A sequence of four dice 30 Large straight A sequence of five dice 40 Yahtzee (think fiveof-a-kind) Five dice with the same face 50 Chance May be used for any sequence of dice; this is the catch all combination Sum of all face values on the 5 dice What is required for this assignment? You may design the Yahtzee game with functions that you see fit. I recommend that you start with a structure chart and determine sub-problems and functions accordingly. You must also take advantage of applying pointers, output parameters, and/or arrays! Your Yahtzee game must also implement the following algorithm: (1) (5 pts) Print a game menu for Yahtzee with the following options: 1. Print game rules 2. Start a game of Yahtzee 3. Exit (2) (5 pts) Get a menu option from the user; clear the screen (3) (10 pts) If option 1 is entered, then print the game rules stated above and repeat step (1) otherwise if option 2 is entered, then continue on to step (4); player 1 starts the game otherwise if option 3 is entered, then print a goodbye message and quit the program otherwise repeat step (1) (4) (5 pts) Ask the player to hit any key to continue on to roll the five dice (5) (5 pts) Roll the five dice and display the face values of each die; enumerate each die with a number 1 – 5; add 1 to the total number of rolls for this round (6) (10 pts) If the total number of rolls for this round is less than three, then ask the player (Y/N) if he/she wants to use the roll for one of the game combinations otherwise a combination must be selected. 1. Sum of 1’s 7. Three-of-a-kind 2. Sum of 2’s 8. Four-of-a-kind 3. Sum of 3’s 9. Full house 4. Sum of 4’s 10. Small straight 5. Sum of 5’s 11. Large straight 6. Sum of 6’s 12. Yahtzee 13. Chance (7) (15 pts) If the number of rolls is three or “yes” is entered, then save the combination and it may not be selected again in the future (Note: The selection of the combination must be verified. If the user selects full house, but does not have one, then your must assign 0 points for the combination); continue on to step (8); clear the screen otherwise if “no” is entered, ask the user which dice to re-roll (1 – 5); re-roll the selected die or dice; clear the screen; repeat step (6) otherwise repeat step (6) (8) (5 pts) Alternate players (9) (10 pts) If each player has rolled for the round, then increment the round number if the round number is equal to 14, then continue on to step (10) otherwise repeat step (4) otherwise repeat step (4) (10) (5 pts) If the total score in the upper section is greater than or equal to 63 for a player, then add 35 points to the total score (11) (5 pts) Print the scores for both players and print the winner (12) (5 pts) Repeat step (1) IV. Expected Results: I recommend that you check out this website http://www.yahtzeeonline.org/ to grasp the game play for Yahtzee. Of course, the game you build is text based. V. Submitting Assignments: 1. Using Canvas https://canvas.wsu.edu/, please submit your solution to the correct “Programming Assignments” (PA) folder. Your solution should be zipped into a .zip file with the name _PA5.zip and uploaded. To upload your solution, please navigate to your correct Canvas lab course space. Select the “Assignments” link in the main left menu bar. Navigate to the correct PA submission folder. Click the “Start Assignment” button. Click the “Upload File” button. Choose the appropriate .zip file with your solution. Finally, click the “Submit Assignment” button. 2. Your project must contain one header file (a .h file), two C source files (which must be .c files), and project workspace. 3. Your project must build properly. The most points an assignment can receive if it does not build properly is 65 out of 100. VI. 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: 85 pts for adherence to the algorithm stated above (see the individual points above) 10 pts for appropriate top-down design of functions and usage of pointers and/or arrays 5 pts for adherence to proper programming style established for the class and comments