#include <iostream>
#include <cstdlib>
using namespace std;
const int MAX_ITER = 1000;
class radiceQuadrata {
public:
double max_errore;
unsigned int max_iterazioni;
int totaleIterazioni;
radiceQuadrata();
radiceQuadrata(double max_err,unsigned int max_iter);
double calcoloRadiceQuadrata(double arg, double max_user_err);
double calcoloRadiceQuadrata(double arg, unsigned int max_user_iter);
};
main() {
radiceQuadrata sqrt = radiceQuadrata();
double argomento = 0;
double errore = 0.01;
double radice = 0;
cout << "Inserisci l\'argomento e l\'errore" << endl;
cin >> argomento;
cin >> errore;
radice = sqrt.calcoloRadiceQuadrata(argomento,errore);
cout<< "\nsqrt(" << argomento << ") = " << radice << endl;
}
radiceQuadrata::radiceQuadrata(){
max_errore = 0.01;
max_iterazioni = 1000;
};
double radiceQuadrata::calcoloRadiceQuadrata(double arg, double max_user_err){
double Radice, RadicePrec, err = arg;
int n, cont=0;
RadicePrec=arg/2;
while(err > max_user_err && cont <= MAX_ITER)
{
Radice=(RadicePrec + arg/RadicePrec)/2;
err=((Radice-RadicePrec)/Radice);
if (err<0) err = -1*err;
RadicePrec=Radice;
totaleIterazioni = cont;
cont++;
}
if (cont >= MAX_ITER) return -1;
else return Radice;
}