Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

errore nel file .c

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

errore nel file .c

Messaggioda BourneMega87 » mar ago 07, 2012 7:44 am

Ciao a tutti, premetto che molto probabilmente è un errore stupido o di distrazione, me ci sto perdendo la testa veramente....
ho un programma che nella compilazione mi da questi due cavolo di errori e non riesco a capirne il perché... qualcuno mi può aiutare?? :S

vi posto le righe dove mi da questo errore: --> expected ‘;’, ‘,’ or ‘)’ before numeric constant
mi dà l'errore alla riga dove è definita la funzione trapezi

/*
definizioni librerie
*/
Codice: Seleziona tutto
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

#define LS 143
#define B 20 
#define fwd 5.19
#define qmax 0.0606
#define qmin 0.0602
#define N_INT 10000 /*definizioni costanti termine */

double calcolo_y(int x);
double trapezi(double(*calcolo_y)(int),double n_int,double z,double q_z,double LS,double f,double fwd,double ysbz,double y_z);

int main(int argc, char *argv[]){
//definizioni variabili
double bmezzi,v,ez,ez1;
double FMIN=10;

........
.......
continuazione programma

e mi da un errore, dello stesso tipo di prima --> expected ‘;’, ‘,’ or ‘)’ before numeric constant
e alla riga dove vado a scrivere la definizione della funzione trapezi...qualcuno saprebbe dirmi il perché??? :S

Codice: Seleziona tutto
double calcolo_y(int x){
double y_LS=0.0;
y_LS=56*sqrt(1-((x^2)/(143^2)));
return y_LS;
}

double trapezi(double(*calcolo_y)(int),double n_int,double z,double q_z,double LS,double f,double fwd,double ysbz,double y_z){
double h=0.0;
double ez=0.0;
int i=0;


vi ringrazio della risposta in anticipo e dell'aiuto... spero di essere stato chiaro...grazie :( :|
Avatar utente
BourneMega87
Aficionado
Aficionado
 
Messaggi: 44
Iscritto il: sab gen 02, 2010 11:30 am

Re: errore nel file .c

Messaggioda BourneMega87 » mar ago 07, 2012 9:16 am

Codice: Seleziona tutto
provatesi.c:14: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
provatesi.c:71: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
gli errori che mi capitano sono questi due :S help....

Codice: Seleziona tutto
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

#define LS 143
#define B 20 
#define fwd 5.19
#define qmax 0.0606
#define qmin 0.0602
#define N_INT 10000 /*definizioni costanti termine */

double calcolo_y(int x);
riga 14: double trapezi(double(*calcolo_y)(int),double n_int,double z,double q_z,double LS,double f,double fwd,double ysbz,double y_z);

int main(int argc, char *argv[]){
//definizioni variabili
double bmezzi,v,ez,ez1;
double FMIN=10;
int f,ysbz=20,ysbz1=20;
int z1=0,z=0;
double q_z=0.0;
double y_z=0.0;
double e_z=0.0;
double e_z1=0.0;
double y_z1=0.0;

f=FMIN;

while(f>=10 && f<= 143){
   z1=LS;
   ysbz1=B;
   ysbz=B;
   bmezzi=B/2;
   
   for(z=143;z>=0;z--){
      //calcolo q(z) e y(z);
      q_z=(((qmax-qmin)/LS)*(LS-z))+qmin;
      y_z=56*sqrt(1-((z^2)/(143^2)));
      /********/
      ez=trapezi(calcolo_y,N_INT,0,q_z,LS,f,fwd,ysbz,y_z);//espressione calcolo integrale ez
      for(z1=143;z1>=0;z1--){
         y_z1=56*sqrt(1-((z1^2)/(143^2)));
         
         
      ysbz++;
      //ez1=trapezi1(0,143,N_INT);//espressione calcolo integrazle ez1
      v=2*(bmezzi-ez);
      if(ysbz1!=v){
         ysbz1=v;
      }else if(ysbz1==v){
         break;
         }
      }
   }
   if(ez<=bmezzi){
      printf("valore eccentricita: %f\n", ez);
      exit(0);
   }
   f=f+1;
   }
return 0;
}

double calcolo_y(int x){
double y_LS=0.0;
y_LS=56*sqrt(1-((x^2)/(143^2)));
return y_LS;
}

riga 71: double trapezi(double(*calcolo_y)(int),double n_int,double z,double q_z,double LS,double f,double fwd,double ysbz,double y_z){
double h=0.0;
double ez=0.0;
int i=0;
h=(LS-z)/n_int;
for(i=z;i<LS;i+=h)
  ez+=((q_z*(LS-i))+((q_z*(i+h))*h/2))-(((8*f*0.8*fwd)/(LS^2))*(ysbz)*(y_z-(*calcolo_y(LS))))+((((8*f*0.8*fwd)/(((LS+h/2)^2)*h/2))*(ysbz)*(y_z-(*calcolo_y(LS+h/2))*h/2)))/((((8*f*0.8*fwd)/(LS^2))*(ysbz))+(((8*f*0.8*fwd)/(((LS+h)^2)*h/2))*(ysbz)));
return ez;
}


grazie mille in anticipo.... :S
Avatar utente
BourneMega87
Aficionado
Aficionado
 
Messaggi: 44
Iscritto il: sab gen 02, 2010 11:30 am

Re: errore nel file .c

Messaggioda M@ttia » mar ago 07, 2012 11:58 am

Non ho un compilatore sottomano, ma dal messaggio d'errore, il problema è che tu hai:

Codice: Seleziona tutto
#define LS 143
#define fwd 5.19


e poi sotto

Codice: Seleziona tutto
double trapezi(double(*calcolo_y)(int),double n_int,double z,double q_z,double LS,double f,double fwd,double ysbz,double y_z);


Stai quindi dando alla funzione un parametro che è una costante: il #define dice al compilatore, in fase di compilazione, di sostituire ogni istanza di LS trovata nel codice con 143, quindi tu è come se avessi scritto

Codice: Seleziona tutto
double trapezi(double(*calcolo_y)(int),double n_int,double z,double q_z,double 143,double f,double 5.19,double ysbz,double y_z);


che ovviamente non ha alcun senso. Se le vuoi definire all'inizio come parametri globali, poi nel codice li usi e basta senza passarli come parametri. Altrimenti li definisci in altro modo (double, ecc.) e poi li passi come parametri.

Sempre nella stessa riga: perché passi anche la funzione calcolo_y by reference per poi convertirla in double, quando essa esiste già e ritorna un double? Semplicemente non passarla del tutto come parametro e usala direttamente no?

[^]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: errore nel file .c

Messaggioda BourneMega87 » mer ago 08, 2012 8:20 am

Giusto, hai ragione, mi era proprio sfuggito...errore da evitare ;) grazie mille comunque
Tutto risolto :D
Avatar utente
BourneMega87
Aficionado
Aficionado
 
Messaggi: 44
Iscritto il: sab gen 02, 2010 11:30 am

Re: errore nel file .c

Messaggioda M@ttia » mer ago 08, 2012 10:21 am

Prego ci mancherebbe! [^]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising