[RISOLTO][c] Arrotondare un numero tramite la funzione floor

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

jolly

Utente Attivo
Messaggi
110
Reazioni
4
Punteggio
38
Salve sto studiando le funzioni e devo svolgere una semplice funzione dove mi sono bloccato,si tratta della funzione floor.

Il punto è inserire un numero e arrotondarlo all'intero più vicino.
Ho fatto cosi:
Codice:
#include <stdio.h>
#include <math.h>
int main( void ) 
{
    float x;
    printf( "Inserisci un numero: " );
    scanf( "%f" , &x );

    printf( "Il floor è %.2f", floor(x) );

    return 0;
}

Ma quando compilo mi restituisce i seguenti errori:
/tmp/cc10V0xN.o: In function `main':
floor.c: (.text+0x26): undefined reference to `floor'
collect2: ld returned 1 exit status
Come mai?Potete farmi capire dove sbaglio,grazie.

Mentre se faccio solo:
Codice:
#include <stdio.h>
#include <math.h>
int main( void ) 
{

    printf("Il floor è %.2f", floor(5.4));

    return 0;
}

Funziona bene.
 
Ultima modifica da un moderatore:
Re: [c] Arrotondare un numero tramite la funzione floor

Se leggi sulle librerie ufficiali, scoprirai che C supporta solo la versione "double"... dichiara x come double e acquisiscilo come tale (%lf ossia "long float") non dovrebbe darti problemi.
P.S. http://www.cplusplus.com/reference/clibrary/ qui trovi tutto!
 
Re: [c] Arrotondare un numero tramite la funzione floor

Ho provato a dichiarare x come double ma restituisce sempre gli stessi errori !
 
Re: [c] Arrotondare un numero tramite la funzione floor

Se usi il terminale linux, hai linkato la libreria math.h? Perchè non lo fa automaticamente...
Prova con "gcc programma.c -lm", dovrebbe andare
 
Re: [c] Arrotondare un numero tramite la funzione floor

grazie Devil 8Ball ora funziona :) ah quindi quando includo la libreria math.h devo aggiungere quel -lm,ora ho capito una cosa nuova grazie a te e contemporaneamente a tutto questo splendido forum.

P.s per curiosità ho provato a dichiarare x come float e funziona lo stesso,dico questo perchè prima leggendo il tuo commento
Se leggi sulle librerie ufficiali, scoprirai che C supporta solo la versione "double"
.
Quindi è un caso che mi funzioni anche con float? Oppure c'è un errore sulle librerie ufficiali?
 
Re: [c] Arrotondare un numero tramite la funzione floor

Quelle librerie si riferiscono allo standart ANSI (anni 70)...il c è cambiato da allora, anceh se di poco.
inoltre Gcc compila anche codice c++... prova a fare gcc -ANSI in teoria non ti dovrebbe compilare
 
Re: [c] Arrotondare un numero tramite la funzione floor

ah ecco tutto chiaro ora :) ...si infatti mi restituisce un'errore.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top