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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!