Pagina 1 di 1
sqrt in C
Inviato: giovedì 2 ottobre 2008, 20:50
da mx92
sto scrivendo un programmino che mi permette di risolvere le disequazioni di secondo grado.
ora vi posto un pezzo della funzione che risolve le disequazioni complete.
Codice: Seleziona tutto
void completa()
{
int x;
delta = pow(b,2) -4*(a*c);
x = ((-b + sqrt(delta)) / 2*a);
}
(devo ancora finire di scriverla)
quando vado a compilarla per vedere le sto commettendo degli errori mi da questo output:
Codice: Seleziona tutto
mauro@mauro:~$ gcc disequazioni.c
/tmp/cc4t3YKp.o: In function `completa':
disequazioni.c:(.text+0x199): undefined reference to `sqrt'
collect2: ld returned 1 exit status
cosa potrebbe essere? non riesco a capire.
PS.: la libreria "stdlib.h" l'ho inclusa.
Re: sqrt in C
Inviato: giovedì 2 ottobre 2008, 20:51
da Hyu
devi includere la libreria math con #include
Re: sqrt in C
Inviato: giovedì 2 ottobre 2008, 20:52
da Ikitt
mx92 ha scritto:
Codice: Seleziona tutto
void completa()
{
int x;
delta = pow(b,2) -4*(a*c);
x = ((-b + sqrt(delta)) / 2*a);
}
(devo ancora finire di scriverla)
quando vado a compilarla per vedere le sto commettendo degli errori mi da questo output:
Codice: Seleziona tutto
mauro@mauro:~$ gcc disequazioni.c
/tmp/cc4t3YKp.o: In function `completa':
disequazioni.c:(.text+0x199): undefined reference to `sqrt'
collect2: ld returned 1 exit status
cosa potrebbe essere? non riesco a capire.
Le funzioni matematiche sono parte della libreria matematica, che non e` linkata per default da gcc: devi farlo esplicitamente, come per ogni libreria esterna.
PS.: la libreria "stdlib.h" l'ho inclusa.
Non e` una libreria: e` un header file (e peraltro sqrt e` dichiarata in math.h)
Re: sqrt in C
Inviato: giovedì 2 ottobre 2008, 20:54
da Guiodic
instanto devi includere math.h nel sorgente, poi devi compilare con l'opizione -lm che dice al linker di linkare appunto la libreria matematica.
edit: scusa ikitt.
Re: sqrt in C
Inviato: giovedì 2 ottobre 2008, 21:04
da mx92
Ikitt ha scritto:
mx92 ha scritto:
Codice: Seleziona tutto
void completa()
{
int x;
delta = pow(b,2) -4*(a*c);
x = ((-b + sqrt(delta)) / 2*a);
}
(devo ancora finire di scriverla)
quando vado a compilarla per vedere le sto commettendo degli errori mi da questo output:
Codice: Seleziona tutto
mauro@mauro:~$ gcc disequazioni.c
/tmp/cc4t3YKp.o: In function `completa':
disequazioni.c:(.text+0x199): undefined reference to `sqrt'
collect2: ld returned 1 exit status
cosa potrebbe essere? non riesco a capire.
Le funzioni matematiche sono parte della libreria matematica, che non e` linkata per default da gcc: devi farlo esplicitamente, come per ogni libreria esterna.
PS.: la libreria "stdlib.h" l'ho inclusa.
Non e` una libreria: e` un header file (e peraltro sqrt e` dichiarata in math.h)
ho incluso anche math.h per la funzione "pow" però cercando su internet visto che bisognava includere il file stdlib.h
Re: sqrt in C
Inviato: venerdì 3 ottobre 2008, 18:41
da kelev
Per la math.h devi utilizzare -lm