I am getting an error C2664: 'F_Ite' : cannot convert parameter 1 from 'double *' to 'double'.Will please anybody help me from this problem.I am new in C++.
Thanks
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std; // you should not use this statement.
void F_Ite(double,double,double,double,double,double);
// never ever declare global data in C++
//Globally Data_type Declaration & Initialization :
double z=0.0001;
double NR=0.01;
int NI=11;
double RF;
int main(int argc, char* argv[]) // put the othe arguments for main (int argc, char* argv[])
{
//Result Of A Fibonacci_Search Algorithm Operation On A Given Function :
std::cout <<"\nThe Function is ' F(x)=e^(-x)+x^2 '";
std::cout <<"\n";
// declare your pointers outside of your function and pass them as parameters to F_Ite
double *a,*b,*c,*d,*Fc,*Fd,I;
// you could optionally initialise them before passing them to your function
int numElement =20;
a = new double[numElement];
b = new double[numElement];
c = new double[numElement];
d = new double[numElement];
Fc= new double[numElement];
Fd= new double[numElement];
// now call the function
F_Ite(a,b,c,d,Fc,Fd);
// Now you can cout your values, or do whatever with them
// don't forget to delete them when you're done.
// wherever you create something with 'new' you should
// always call 'delete' when finished!
//User Specify The Interval :
std::cout << "\nGive The Initian Point :" <<"\na1 =";
std::cin >> a[1];
std::cout << "\nGive The Final Point :" <<"\nb1 =";
std::cin >> b[1];
//Find Distance Between The Starting Interval :
I=(b[1]-a[1]);
std::cout << "\nInterval Reduction At The Initial Iteration :"<< "\nI(1) = " << I <<"\n";
//For Accuracy Exactness Need A Small Pertubation At The Final Interval
std::cout <<"\nFor Accuracy At The Final Interval, Taken The Small Perturbation z :";
std::cout <<"\nTaken z = 0.0001" << "\n";
//Give The Prescribe Interval Reduction :
std::cout <<"\nNeeded The Prescribe Interval Reduction :" <<"\nNR = 0.01 units";
std::cout <<"\n";
//Calculate The Number Of Iteration From The Given Interval Reduction :
//By Fibonacci Series
std::cout <<"\nAccording To The Interval Reduction";
std::cout <<"\nThe Requring Number Of Iteration :" << "\nNI = 11 times";
std::cout <<"\n";
std::cout <<"\n";
system("pause"); // this is a platform specific call. do not use this.
//To Calculate The Ratio of two consecutive Fibo_Num (F(m-1)/Fm) :
//Function (F(m-1)/Fm) Declaration :
double R_Fibo();
std::cout <<"\nBefore The Start Of Interval Reduction";
std::cout << "\nThe Ratio of two consecutive Fibo_Num :"<<"\nRF = 0.618056";
std::cout <<"\n";
//Here The Beginnins Of Iteration Technique
//We Introduce Two Another Points For Getting Two New Interval Of Uncertainty
//First Point 'c1' And Second Point 'd1' :
c[1]=b[1]-(R_Fibo()*I);
std::cout << "\nPlaced A Point c1 Within The Initial Interval :"<< c[1];
d[1]=a[1]+(R_Fibo()*I);
std::cout <<"\nPlaced Another Point d1 Within The Initial Interval :"<<d[1];
std::cout <<"\n";
std::cout <<"\n";
//Showing The Starting Reduction :
//----------------
//----------------
std::cout <<"At The First Iteration :\n";
std::cout <<"The Value Of a1=" << a[1] << "\n";
std::cout <<"The Value Of b1=" << b[1] << "\n";
std::cout <<"The Value Of c1=" << c[1] << "\n";
std::cout <<"The Value Of d1=" << d[1] ;
//Function 'Fc1' at point 'c1' And Function 'Fd1' at point 'd1':
//--------------------
// write a function which takes one argument and returns the value. use it here instead of explicit coding.
Fc[1]=(exp(-c[1]))+(c[1]*c[1]);
std::cout << "\nAt c1 The Function Value Fc1=" << Fc[1];
//std::cout <<"\n";
Fd[1]=(exp(-d[1]))+(d[1]*d[1]);
std::cout << "\nAt d1 The Function Value Fd1=" << Fd[1];
std::cout <<"\n";
std::cout <<"\n";
//---------------------
//---------------------
//system("pause");
// this must be defined outside of main and called here explicitly.
double In=b[NI]-a[NI];
std::cout <<"\nThe Interval Reduction At The Final Iteration :" <<"\nI(n)= " << In;
std::cout<<"\n";
delete [] a;
delete [] b;
delete [] c;
delete [] d;
delete [] Fc;
delete [] Fd;
std::cout << std::endl;
system("pause");
//return 0;
}
//Ratio of two successive terms of Fibonacci Sequence is obtained using Binet's Formula
//Function (F(m-1)/Fm) Defination :
double R_Fibo()
{
double n1=1-(sqrt((double)5));
double n2=1+(sqrt((double)5));
double s=(n1/n2);
//cout << "\nsThe Value Of s = " << s <<"\n";
double s1=(sqrt((double)5)-1)/2;
//cout << "\nThe Value Of s1 = " << s1 <<"\n";
double RF=s1*((1-pow(s,NI))/(1-pow(s,(NI+1))));
//std::cout << "\nThe Ratio of two consecutive Fibo_Num :"<<"\nRF = " << RF <<"\n";
//std::cout << RF;
return RF;
}
// pass values into F_Ite() function
void F_Ite(double *a, double *b, double *c, double *d, double *Fc, double *Fd)
{ //F_Ite Function Start
for(int k=1;k<(NI-1);k++)
{ //Main 'for' Loop Start
std::cout <<"\n";
system("pause");
std::cout <<"\n";
std::cout <<"At The "<<k+1<<" Iteration :\n";
if(Fc[k]<Fd[k])
{ //Outer 'if' Start
a[k+1]=a[k];
cout <<"The Value Of a" << k+1 << "=" << a[k+1] << "\n";
b[k+1]=d[k];
cout <<"The Value Of b" << k+1 << "=" << b[k+1] << "\n";
//c[k+1]=b[k+1]-(0.618034*((1-pow(-0.381966,NI-k))/(1-pow(-0.381966,NI-k+1))))*(b[k+1]-a[k+1]);
//cout <<"The Value Of c" << k+1 << "=" << c[k+1] << "\n";
if(k==(NI-1))
{
c[k+1]=c[k+1]+z;
cout <<"The Value Of c" << k+1 << "=" << c[k+1] << "\n";
}
else
{
c[k+1]=b[k+1]-(0.618034*((1-pow(-0.381966,NI-k))/(1-pow(-0.381966,NI-k+1))))*(b[k+1]-a[k+1]);
cout <<"The Value Of c" << k+1 << "=" << c[k+1] << "\n";
}
d[k+1]=c[k];
cout <<"The Value Of d" << k+1 << "=" << d[k+1] << "\n";
Fc[k+1]=(exp(-c[k+1]))+(c[k+1]*c[k+1]);
std::cout <<"The Value Of Fc" << k+1 << "=" << Fc[k+1] << "\n";
//std::cout <<"The Value Of Fc" << k+1 << "=" << Fc[k] << "\n";
Fd[k+1]=Fc[k];
//std::cout <<"The Value Of Fd" << k+1 << "=" << Fc[k] << "\n";
std::cout <<"The Value Of Fd" << k+1 << "=" << Fd[k+1] << "\n";
} //Outer 'if' Close
else
{ //Outer 'else' Start
a[k+1]=c[k];
std::cout <<"The Value Of a" << k+1 << "=" << a[k+1] << "\n";
b[k+1]=b[k];
std::cout <<"The Value Of b" << k+1 << "=" << b[k+1] << "\n";
c[k+1]=d[k];
std::cout <<"The Value Of c" << k+1 << "=" << c[k+1] << "\n";
//d[k+1]=a[k+1]+((0.618034)*((1-pow((-0.381966),(NI-k)))/(1-pow((-0.381966),(NI-k+1)))))*(b[k+1]-a[k+1]);
//std::cout <<"The Value Of d" << k+1 << "=" << d[k+1] << "\n";
if(k==(NI-1))
{
d[k+1]=d[k+1]+z;
std::cout <<"The Value Of d" << k+1 << "=" << d[k+1] << "\n";
}
else
{
d[k+1]=a[k+1]+((0.618034)*((1-pow((-0.381966),(NI-k)))/(1-pow((-0.381966),(NI-k+1)))))*(b[k+1]-a[k+1]);
std::cout <<"The Value Of d" << k+1 << "=" << d[k+1] << "\n";
}
Fc[k+1]=Fd[k];
//std::cout <<"The Value Of Fc" << k+1 << "=" << Fd[k] << "\n";
std::cout <<"The Value Of Fc" << k+1 << "=" << Fc[k+1] << "\n";
Fd[k+1]=(exp(-d[k+1]))+(d[k+1]*d[k+1]);
std::cout <<"The Value Of Fd" << k+1 << "=" << Fd[k+1] << "\n";
//std::cout <<"The Value Of Fd" << k+1 << "=" << Fd[k] << "\n";
} //Outer 'else' Close
} //Main 'for' Loop Close
//Another 'if' Condition Start But Within The 'for' Loop
if(Fc[10]<Fd[10])
{
std::cout <<"\n";
std::cout <<"\nAt Final Iteration :\n";
a[NI]=a[NI-1];
b[NI]=d[NI-1];
std::cout <<"The Value Of a11 =" << a[NI] << "\n";
std::cout <<"The Value Of b11 =" << b[NI] << "\n";
}
else
{
a[NI]=c[NI-1];
b[NI]=b[NI-1];
std::cout <<"The Value Of a11 =" << a[NI] << "\n";
std::cout <<"The Value Of b11 =" << b[NI] << "\n";
}
} //F_Ite Function Close