PDA

Visualizza la versione completa : [C] Funzione di controllo quadrato perfetto


EngLab
02-11-2008, 13:31
Ciao!

In un mio programma C, devo verificare che un dato int sia un quadrato perfetto. Esiste una funzione gi esistente che posso usare?

Grazie!

oregon
02-11-2008, 14:03
No .. come lo faresti "su carta"?

EngLab
02-11-2008, 14:24
Semplicemente:



float rad;
int num;

//...

rad=square(num);


Poi, controllerei se rad un intero. E questa la mia seconda domanda. Non esiste nessuna funzione, tipo is_int() per controllare che un float abbia parte decimale uguale a 0?

MItaly
02-11-2008, 14:30
if(floor(rad)==rad)
//il numero non ha parte decimale

oregon
02-11-2008, 14:58
Originariamente inviato da EngLab
E questa la mia seconda domanda. Non esiste nessuna funzione, tipo is_int() per controllare che un float abbia parte decimale uguale a 0?

Ripeto ... come faresti "sulla carta" ...?

Un numero non ha parte decimale (o lo ha eguale a zero) se il numero risulta eguale alla sua parte intera ...

Vedi la risposta di MItaly ...

EngLab
02-11-2008, 15:11
La funzione floor proprio quella che mi serve. Non sapevo come si chiamasse.
Comunque, io ho



int diff;
double rad;

//il diff lo calcolo e risulta corretto
rad=(double)sqrt(diff);
printf("diff=%d rad=%d\n", diff, rad); //qui stampa diff e rad


La printf finale mi da un diff esatto, ma rad risulta sballatissimo, addirittura negativo.

oregon
02-11-2008, 15:15
%d serve solo per gli interi ... ma rad non e' un intero ...

EngLab
02-11-2008, 15:27
Grazie mille, sono all'inizio col C. :)

Loading