Ok, grazie! In effetti non sapevo che tutti i metodi si debbano eseguire tramite oggetti della classe.. Comunque, ora il codice mi da' un'altro problema, stavolta a livello di calcoli, credo.
Il programma si compila, parte, inserisco a e b, ma al posto di ogni risultato mi da' in uscita "nan" (ovvero not a number, da quanto ho visto in giro). Eppure, nuovamente, non vedo dove sia il problema. (scusate il macello di cicli if che ho messo, ma non conoscevo altri metodi per considerare tutti i vari casi)
# include <iostream>
# include <math.h>
using namespace std;
class Polinomio
{int grado;
double * coefficienti;
double v(double * pppp, int gggg, double zzzz)
{
if( gggg ) return pppp[0] + zzzz *
v(pppp+1, gggg-1, zzzz); return pppp[0];}
public:
double calcola(double z)
{double * pippo = coefficienti;
int grado = this->grado;
return v(pippo, grado, z);}
Polinomio( ) { }
Polinomio(int n, double * c) :
grado(n), coefficienti(c) { }
//double zeropublic(double amain, double bmain, double Xoh) {double ah = amain; double bh = bmain; return zero(ah, bh, Xoh);}
double zero(double a, double b, double * Xo)
{double * pippo = coefficienti; int grado = this->grado;
double Fa = v(pippo, grado,a); double Fb = v(pippo, grado, b);
double c = b-a; double Fc = v(pippo, grado, c);
double d = (b-a)/2; double pow(double x, double y);
double p1 = Fa * Fb; double p2 = Fa * Fc;
if(p1 == 0) {if (Fa = 0) {return Fa;} else {}; if (Fb = 0) {return Fb;} else {};
if ((Fa=0)&&(Fb=0))
{Xo[1]=a, Xo[2]=b; return * Xo;}else {};};
{
{if (p1 > 0) ; else
{
if(d < pow(10,-10))
{return a;} else {
if(Fc == 0)
{return c;} else
{if(p2 < 0)
{a = c; zero(a, b, Xo);} else {b = c; zero(a, b, Xo);}}
}}}}
};};
int main( )
{int n;
cout << "dimmi il grado ", cin >> n;
double * d = new double[n+1];
cout << "dimmi i valori di "
<< n+1 << " coefficienti "
" (ordinati) ";
for( int i=0; i <= n; ++i )
cin >> d[i];
Polinomio p(n, d);
double x; double amain; double bmain; double * Xoh = new double[2];
do
{int scelta;
cout << "io so fare:\n"
"0: uscita\n"
"1: calcolo di un polinomio\n"
"2: calcolo di uno zero\n"
"altro: varie ed eventuali\n\n"
"fai la tua scelta \n",
cin >> scelta;
switch(scelta)
{
default:
cout << "ripassa\n";
break;
case 0: return 222;
case 1:
cout << "dimmi x ",
cin >> x,
cout << "p("<<x<<") : " <<
p.calcola(x) << endl;
break;
case 2:
cout << "dimmi a\n", cin >> amain, cout << "dimmi b\n", cin >> bmain,
cout << p.zero(amain, bmain, Xoh) << endl;
}
} while(true);
}