Question: Create a program that does the following. (C program) -Create a global array length five, moving_sum, and initialize it to zeros. -Prompts a user for
Create a program that does the following. (C program)
-Create a global array length five, moving_sum, and initialize it to zeros.
-Prompts a user for fives numbers
-For each number creates a thread
-Each thread executes a function factorial which takes a struct containing the number and index of the number entered (0 - 4) and does the following:
Calculates the factorial (e.g. 5! = 5x4x3x2x1 = 120, 0! = 1).
Using a semaphore, gets the previous value in the moving_sum[index-1] if the value at that index is > 0. If the value is retrieved it is added to the factorial calculated andthe sum is added to moving_sum[index].
Until the value in moving_sum[index-1] is > 0, performs an infinite loop, each time it must perform signal and wait to allow other threads access to the critical section.
- After all threads finish (using join()) print the contents of moving_sum
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
