I am having trouble with my program. I have been working on it for the last couple of days. I am supposed to use Simpson's rule but I am having trouble implementing it into my program.

You have to input:

road length= 1000

road width= 75

measure points= 11

enter for y value : 0, 6, 10, 13, 17, 22, 25, 20, 13, 5, 0

the answer is supposed to be 985000 cu. ft. but I keep getting 982500.0 cu. ft.

Here is the code:

Code:

#include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>
using namespace std;
// Prototyptes
double SimsonArea(int, double);
int main()
{
int NumPoints, RdWidth;
double RdLength, HillCrossSectionalArea, DirtVolume;
char Usrp;
do
{
system("CLS");
cout << "\n\n";
cout <<"\nEnter the length of roadway through the hill:";
cin >> RdLength;
cout <<"\n Enter the width of the roadway:";
cin >> RdWidth;
cout <<"\nEnter the number of points at which hill";
cout <<"\n elevation was measured:";
cin >> NumPoints;
cout <<"\nEnter the hill elevations(y values) at the";
cout <<endl << NumPoints << " equally-spaced points:";
cout <<"\n\n";
HillCrossSectionalArea = SimsonArea(NumPoints,RdLength);
DirtVolume = RdWidth * HillCrossSectionalArea;
cout << setprecision(1) << fixed << showpoint;
cout << "\n\n";
cout << "---> The volume of dirt to be removed is";
cout << "\n Approximately " << DirtVolume << " cubic units.";
cin.ignore();
cout << "\n\n\n\t Do Another (Y or N):";
cin.get(Usrp);
Usrp = toupper(Usrp);
} while (Usrp == 'Y');
}
double SimsonArea (int n, double length)
{
double sum = 0, yValue, deltaX;
for(int i = 0; i <= n-1; i++)
{
cout <<"Enter y value #" <<i+1 <<":";
cin >> yValue;
if(i==0 || i==n)
sum += yValue*4.0;
else
sum+=yValue;
}
deltaX=length/static_cast<double>(n-1);
return deltaX*sum;
}