sqrt in C

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
mx92
Prode Principiante
Messaggi: 218
Iscrizione: domenica 7 ottobre 2007, 9:08
Località: Molfetta (Ba)

sqrt in C

Messaggio 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.
Avatar utente
Hyu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 275
Iscrizione: domenica 9 dicembre 2007, 21:43
Località: Roma

Re: sqrt in C

Messaggio da Hyu »

devi includere la libreria math con #include
Periferiche funzionanti: Webcam: Trust WP-1200p, Stampanti: HP-LJP1006, Mp3: Samsung YP-U3J, Sony NWZ-B142F // non supportano ufficialmente gnu/linux, preferire sempre prodotti con supporto ufficiale.
Ikitt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1816
Iscrizione: mercoledì 24 ottobre 2007, 12:05

Re: sqrt in C

Messaggio 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.

Codice: Seleziona tutto

gcc -lm disequazioni.c
PS.: la libreria "stdlib.h" l'ho inclusa.
Non e` una libreria: e` un header file (e peraltro sqrt e` dichiarata in math.h)
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: sqrt in C

Messaggio 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.
mx92
Prode Principiante
Messaggi: 218
Iscrizione: domenica 7 ottobre 2007, 9:08
Località: Molfetta (Ba)

Re: sqrt in C

Messaggio 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.

Codice: Seleziona tutto

gcc -lm disequazioni.c
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
Avatar utente
kelev
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1766
Iscrizione: giovedì 4 settembre 2008, 0:27

Re: sqrt in C

Messaggio da kelev »

Per la math.h devi utilizzare -lm
"E alla fine sei da solo, dove vai, con chi brindi?"
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti