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

Λίγη βοήθεια στην C...


antonis_wrx

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

Δημοσ.

Τι πρόβλημα υπάρχει στην επικεφαλλίδα και στο κάλεσμα της συνάρτησης f?

 

complex newton(complex (*f) (complex,double,int), complex z, double pz[MAX], double pdz[MAX], int va8mos)

{

double a=f(z,pz,va8mos); /*σειρά 10*/

double b=f(z,pdz,va8mos-1); /*σειρά 11*/

....

..

}

 

complex f(complex z, double p[MAX], int va8mos)

 

ο compiler βγάζει:

ask2.c: In function `newton':

ask2.c:10: error: incompatible type for argument 2 of indirect function call

ask2.c:11: error: incompatible type for argument 2 of indirect function call

Δημοσ.

Prepei na elegkseis an to deutero orisma stin f, f(z,pz,va8mos) to pz, einai ontws typou double kai oxi kati allo. To idio kai stin apokatw grammi. Kai deuteron nomizw pws prepei na oriseis tin synartisi f prin tin xrisimopoihseis san call stin synartisi newton. Episeis exeis apo ena lathos stis 10 kai 11 oswn afora to ti epistrefei h f. Ston orismo les pws epistrefei complex enw stin newton zitas double. Lathos auto! Tsekare ta kai pes mou an trexei meta h sou vgazei kai allo lathos

Δημοσ.

το 1ο ορισμα της newton ειναι το complex (*f) (complex,double,int) ok?

Αρα οταν μεσα στη newton καλεις f(z,pz,va8mos), καλεις ουσιαστικα αυτο το πρωτο ορισμα, και οχι την f που εχεις κατω-κατω...... και πραγματι τα ορισματα ειναι διαφορετικα γιαυτο και ο compiler παραπονιεται.

Αλλαξε το ονομα του ορισματος ή της συναρτησης.... και οπως λεει ο powerfly ορισε την f πρωτη εκτος και αν εχεις καπου πιο πανω τα prototypes τους....

Δημοσ.

όντως αυτό η σειρά έφταιγε, ευχαριστώ παιδιά. Κάτι άσχετο, τι σημαίνει όταν ένα πρόγραμμα που τρέχει βγάζει Floating point exception?

Δημοσ.

Συμβαίνει για διάφορους λόγους, όπως π.χ.: Division by Zero, overflow, invalid operation κ.τλ. Δείξε κώδικα ή κάνε debugging.

Δημοσ.

χεχε!!όλοι ηλεκτρολόγοι είμαστε εδώ μέσα? τελικά μλκια είπα όμως, δεν διορθωθηκε:

[antonis@localhost analush]$ gcc -o ask2.exe ask2.c -lm

ask2.c: In function `newton':

ask2.c:21: error: incompatible type for argument 2 of indirect function call

ask2.c:22: error: incompatible type for argument 2 of indirect function call

 

---

complex f(complex z, double p[MAX], int va8mos)

{

int j;

....

}

 

complex newton(complex (*f) (complex,double,int), complex z, double pz[MAX], double pdz[MAX], int va8mos)

{

complex a=f(z,pz,va8mos); /*21*/

complex b=f(z,pdz,va8mos-1); /*22*/

.....

}

Δημοσ.

Η συνάρτηση που περνάς μέσω δείκτη στη newton πρέπει να έχει δεύτερο όρισμα double[], δηλαδή δείκτη προς double και όχι double:

 

complex f(complex z, double p[MAX], int va8mos)

{

int j;

....

}

 

complex newton(complex (*f) (complex,double[],int), complex z, double pz[MAX], double pdz[MAX], int va8mos)

{

complex a=f(z,pz,va8mos); /*21*/

complex b=f(z,pdz,va8mos-1); /*22*/

.....

}

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

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

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