PDA

View Full Version : Calcolo radice ennesima in C


Yorik
17-09-2002, 00:16
Allora amici di The CodeForge vi faccio una piccola domandina, come implementereste una funzione di radice ennesima in C?
_________________________________________________
#include<stdio.h>
#include<math.h>
main()
{
float a, fa, b;
int vb;
printf("\n\n\nRadicando: ");
scanf("%f", &a);
printf("Radice: ");
scanf("%f", &b);
vb = b/2;
if((((b-vb*2)!=0)&&(a<0))||(((b-vb*2)==0)&&(a>0))){
fa = pow(fabs(a), (1.0/b));
if(a<0)
printf("\nla radice %g^ di %g e' -%g", b, a, fa);
else
printf("\nla radice %g^ di %g e' %g", b, a, fa);
}
}
__________________________________________________ _
questo e' un piccolo programmino atto a tale compito, si basa sull'utilizzo della funzione <pow> per l'elevamente a potenza, mi chiedevo se ci fossero altri modi per risolvere questo problema, magari se qualcuno ha usato un'altro algoritmo risolutivo :)
--== :hello: Ciauz :hello: ==--

DM Ilweran
17-09-2002, 10:56
Probabilmente esistono altri algoritmi ma te li devi cercare in rete (google gruppi).
Se funziona va bene.
main () continua a restituire un int eh.

Reiser DarkSide
25-09-2002, 20:26
io solitamente al main faccio restituire Void

tipo

Void main(void)

DM Ilweran
26-09-2002, 01:58
No: te lo compila
a) perchè il tuo è un compilatore c/c++
b) perchè non passi opzioni ANSI e simili e crede sia C89 o addirittura K&R

La notazione ufficiale è
int main (void)
ma puoi usare anche
int main (int argc, char *argv[])

Va su google e scaricati il file n869.pdf.

Ciao.

Nafta
26-09-2002, 18:25
gente, ora dico la cazzata, ma non potreste provare a elevare il numero alla 1/n , dove n è l'indice della radice?

Yorik
27-09-2002, 21:54
Ehm :awk: infatti e' quello che e' stato fatto ;)

Nafta
28-09-2002, 16:14
bhe, io il c non lo conosco, non l'ho nemmeno guardato il codice.. ma siccome parlavate di algoritmi..