Exercise 1 Write a program that: - declares a variable double a and a double * aPtr - assign to aPtr the address of a - assign to a value of 5 using aPtr (i.e. it is forbidden to write a = 5) - print a and aPtr - Multiply by 2 using aPtr (i.e. it is forbidden to write a = a * 2.) - print a and aPtr Exercise 2 Write a program that: - create an array of integers of size n - assigns to the elements of this array the values ​​0, 1, 2, 3, ..., n   using the pointer arithmetic - print the matrix ./pointerEs2.exe  a [0] = 0; aPtr = 0xbfffe110; * aPtr = 0  a [1] = 1; aPtr = 0xbfffe118; * aPtr = 1  a [2] = 2; aPtr = 0xbfffe120; * aPtr = 2  a [3] = 3; aPtr = 0xbfffe128; * aPtr = 3  a [4] = 4; aPtr = 0xbfffe130; * aPtr = 4  a [5] = 5; aPtr = 0xbfffe138; * aPtr = 5  a [6] = 6; aPtr = 0xbfffe140; * aPtr = 6  a [7] = 7; aPtr = 0xbfffe148; * aPtr = 7  a [8] = 8; aPtr = 0xbfffe150; * aPtr = 8  a [9] = 9; aPtr = 0xbfffe158; * aPtr = 9 Exercise 3 Calculate the integral of a function y = f (x) with the trapezoidal method: area = DeltaX * ((y (0) + y (n)) / 2 + (y (1) + y (2) + ... + y (n-1))) where n is the number of sub-intervals in which the integration domain and DeltaX is the amplitude of each sub-interval. y (i-1) and y (i) are the values ​​assumed by the function at the lower end e top of the i-th interval. The user can specify the integration details and the number of sub-intervals during program execution. The program must consist of: *a main program, *a function that calculates the values assumed by the integrand function at the ends of the sub-intervals *a function that calculates the integral with the trapezoidal method. Suggestion: use an array to store the values ​​of the function at the ends of each sub-intervals: double * func[n]; Execution example: ./useTrapeziodalIntegration Calculation of an integral with the trapezium method Low value of the integration interval: 1 High value of the integration interval: 2 Number of sub-intervals: 20 The integral of the function in the interval 1 2 is :0.16772 Exercise 4 Using the function that calculates the integral with the trapezoidal method developed for the previous exercise, write the program so that the user can specify the desired accuracy. Tips: - the user gives the epsilon parameter from the keyboard. The integral must be calculated   in an iterative way, doubling the subintervals at each iteration,   until (abs (area - oldArea) < epsilon * abs (area)). area is the value of the integral in the current iteration, oldArea is the value   in the previous iteration. abs is the absolute value (i.e. you have to include cmath). - make sure that there are at least 3-4 iterations to avoid accidental convergences - end the iterative process even in the absence of convergence after a   maximum number of pre-set iterations Execution example: ./useTrapezoidalIntegration2 Calculation of an integral with the Trapezius method Low value of the integration interval: 1 High value of the integration interval: 2 Precision: 0.01 The integral is: 0.167748 Exercise 5 Write a function that returns the numerical derivative of a given function at a given point x, using a given tolerance h. Use the formula f'(x) = (f(x+h)-f(x-h))/(2h) This derivative() function has three arguments: 1)a *pointer* to the function f, 2)the x value, 3)and the tolerance h. In this exercise you have to implement and use the cube() function. double derivative(double (*) (double), double, double); Finally, store the output of the function in a text file. ./derivative Derivative example x: 1 Tolerance: 0.001 Derivative of cube function in x = 1 is 3 File derivative.txt has been created Exercise 6 (don't do this one) Implement and test the following function: bool is_palindrome(string s); // Returns true if s is a palindrome // EXAMPLES: is_palindrome("RADAR") returns true, // is_palindrome("ABCD") returns false (isPalindrome.cpp)