Create fraction.h

Problem Statement:
Define a structure struct fraction to represent fractions. Use this definition to implement the following six functions:

struct fraction fractionCreate (int numerator, int denominator); 
    Creates a reduced fraction with the specified numerator and denominator.
struct fraction fractionAdd (struct fraction a, struct fraction b); 
    Returns a + b.
struct fraction fractionSubtract (struct fraction a, struct fraction b); 
    Returns a - b.
struct fraction fractionMultiply (struct fraction a, struct fraction b); 
    Returns a * b.
struct fraction fractionDivide (struct fraction a, struct fraction b); 
    Returns a / b.
void fractionPrint (struct fraction f); 
    Prints fraction f in the same format as A2P1. You may reuse your reduce.c submission for this function.
Make sure that your program reduces the fraction after every arithmetic operation. As long as your fraction is reduced after every step, you may assume that the numerator and denominator from the result are always within ± 1,000,000,000, and the intermediate steps will never cause an overflow.

If any of the parameters in fractionCreate, Add, Subtract, Multiply, and Divide contains 0 as the denominator, return a structure such that, when you print it using fractionPrint, it will output Divide by zero!. The same should be done when the numerator or the denominator of parameter b in fractionDivide is 0.