Προς το περιεχόμενο

SQRT stin C


wazomania

Προτεινόμενες αναρτήσεις

Δημοσ.

πρώτον ΔΕΝ ξέρω αν υπάρχει έτοιμη συνάρτηση.

 

αν όντως δεν υπάρχει τότε βλέπω 2 τρόπους

 

α) μπακάλικος: βρές την δύναμη του αριθμού εις την 1/3 (για τρίτη ρίζα), 1/4 (για τέταρτη ρίζα) κοκ

 

β) πιο σωστός: φτιάξε μια float συνάρτηση sqrt_new(int taksi, float number)

και επέστρεφε την τιμή number^(1/taksi).

 

έτσι καλώντας για την μεταβλητή χ την 5η ρίζα γράφεις απλώς:

y=sqrt_new(5,x);

 

so simple

Δημοσ.

#include <math.h>

 

double pow(double x, double y);

 

DESCRIPTION

 

The pow() function computes the value of x raised to the power y. If x is negative, y must be an integer value.

 

οπότε

 

double triti_riza_tou_100 = pow (100, 1/3);

Δημοσ.

Η καλύτερη λύση είναι να δημιουργήσεις την δικιά σου συνάρτηση, χρησιμοποιώντας κάποιο ανάπτυγμα για την έρευση της ρίζας.

  • 2 εβδομάδες αργότερα...
Δημοσ.

to pio aplo einai na eisageis tin <math.h>

meta ama thes na dineis esu ta dedomena i na ta eisageis apo kapoio arxeio tote i tha einai me tin entoli scanf gia eisagwgi apo to pliktrologio i px

input1=fopen("times.txt","r"); gia na diavasei apo to arxeio....

 

an thes tis times tote kane ena kolpo na stis bgazei stin eksodo ws

x=pow(8,1/3); kai tha sou vrei tin 3h riza tou 8 pou einai to 2

 

elpizw na voithisa..genikws an xrisimopoihseis tin pow(a,B) tote sou upsoni to a stin dunami b.... arkei fusika ama thes rizes na exeis valei double gia na sou bgalei kalo apotelesma

Δημοσ.

/* Ch Iossif's: abs, exp, */

/* log and pow functions */

/* For testing purposes only ! */

/* Use at your own risk ! */

 

double myabs(double x){

return x>0?x:-x;

}

 

#define EPS 1e-9

 

double myexp(double x){

double or, s;

int i;

 

or=x;

s=1+or;

i=1;

while (or>EPS)

s+=or=or*x/++i;

return s;

}

 

double mylog(double x){

double or, s;

int i;

 

if (x>0){

x=(x-1)/(x+1);

or=x;

s=or;

i=1;

while (or>EPS)

s+=or=or*i*x*x/(i+=2);

return 2*s;

}

}

 

double mypow(double y, double x){

int ix,ns,pt;

double z;

 

if (myabs(x-(int)x)<EPS){

ix=(int)((ns=x<0)?-x:x);

for(pt=1;pt<=ix;pt<<=1);

for (z=y,pt>>=1;pt>>=1;){

z*=z;

if(ix&pt)z*=y;

}

return ns?1.0/z:z;

}

else if (y>0)

return myexp(x*mylog(y));

else

return 1.0;

}

 

/*...και ο κώδικας ξερός - gCppX */

 

...λυπάμαι και ζητώ συγνώμμη για τις φατσούλες.

Πιστεύω ότι δεν θα 'ναι δύσκολο να τις "βγάλετε".

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...