PDA

View Full Version : [C++] sqrt Undeclared ?


Xizor
02-12-2007, 12:31
Ho riscontrato il seguente problema: mi dice sqrt undeclared e non capisco perchè, :muro: ho tentato di tutto ma non riesco a capire dove sta il problema. :cry: Questo è il testo:


/*modulo.cpp*/
#include<iostream.h>
#include<stdio.h>

int main () {
double a,b,c,x1,x2;
void input (double*, double*, double*);
void calcola (double,double,double,double*,double*);
void output (double,double);
/*chiamate delle funzioni*/
input (&a,&b,&c);
calcola (a,b,c,&x1,&x2);
output (x1,x2);
system("pause");
return 0;
}
void input (double* coeffa,double* coeffb,double coeffc) {
cout<<"inserire il coeff a";
cin>>*coeffa;
cout<<"inserire il coeff b";
cin>>*coeffb;
cout<<"inserire il coeff c";
cin>>coeffc;
}
void calcola (double aa,double bb,double cc, double *t,double*z) {
/*prototipo della funzione delta*/
double delta (double,double,double);
*t=(-bb+sqrt(delta(aa,bb,cc)))/2*aa;
*z=(-bb-sqrt(delta(aa,bb,cc)))/2*aa;
}
double delta (double x,double y,double z) {
return y*y-4*x*z;
}
void output (double sol1,double sol2) {
cout<<"la prima soluzione vale"<<sol1<<endl;
cout<<"la seconda soluzione vale"<<sol2<<endl;
}


Questo è il risultato dopo la compilazione;

In function `void calcola(double, double, double, double*, double*)':
(riga 28) `sqrt' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

Grazie infinite. ;)

kk3z
02-12-2007, 12:33
#include <math.h> o #include <cmath>

Quell' <iostream.h> dovrebbe essere <iostream>

Xizor
02-12-2007, 12:48
Ho messo #include<math.h> E l'errore è cambiato:

[Linker error] undefined reference to `input(double*, double*, double*)'
ld returned 1 exit status

||ElChE||88
02-12-2007, 13:20
Ho messo #include<math.h> E l'errore è cambiato:

[Linker error] undefined reference to `input(double*, double*, double*)'
ld returned 1 exit status
E' dichiarato come:
void input (double*, double*, double*);

E poi invece l'hai scritto così:
void input (double* coeffa,double* coeffb,double coeffc) {

maulattu
02-12-2007, 18:36
se stai sviluppando in linux/unix con gcc (nel tuo caso g++) credo tu debba usare la direttiva "-lm" (- livorno milano) che permette di considerare nella fase di linking la libreria matematica ("m" appunto).

||ElChE||88
02-12-2007, 18:53
se stai sviluppando in linux/unix con gcc (nel tuo caso g++) credo tu debba usare la direttiva "-lm" (- livorno milano) che permette di considerare nella fase di linking la libreria matematica ("m" appunto).
Finchè non corregge quel puntatore non servirà a molto... :asd:

maulattu
02-12-2007, 19:47
Finchè non corregge quel puntatore non servirà a molto... :asd:

giusto :read: