2013-10-20 9 views
8
#include <stdio.h> 
#include <math.h> 

double integrateF(double low, double high) 
{ 
    double low = 0; 
    double high = 20; 
    double delta_x=0; 
    double x, ans; 
    double s = 1/2*exp((-x*x)/2); 

    for(x=low;x<=high;x++) 
     delta_x = x+delta_x; 
    ans = delta_x*s; 

    return ans; 
} 

Si dice che basso e alto sono "redeclared come diverso tipo di simbolo" e non so cosa significhi. Fondamentalmente, tutto quello che sto facendo qui (LEGGI: ​​cercando) si sta integrando da basso (che ho impostato a 0) ad alto (20) per trovare la somma di Riemann. Anche il ciclo for sembra un po 'troppo divertente ... Sono così perso."... redeclared come diverso tipo di simbolo"?

EDIT:

#include <stdio.h> 
#include <math.h> 

double integrateF(double low, double high) 
{ 
    low = 0; 
    high = 20; 
    double delta_x=0; 
    double ans = 0; 
    double x; 
    double s = 1/2*exp((-x*x)/2); 

    for(x=low;x<=high;x++) 
    { 
     delta_x = x+delta_x; 
     ans = ans+(delta_x*s); 
    } 
    return ans; 
} 

^Che ancora non funziona, dopo le parentesi graffe e tutti. Si dice "undefined reference to 'WinMain @ 16'" ...

+0

utilizzare le graffe - In caso contrario, si ottiene catturati con voi i pantaloni giù - questo è un buon esempio! –

+0

@CodeBewb: - Assicurarsi di avere definito main(). Controlla la mia risposta aggiornata! –

+0

Solo una domanda, se stai solo usando le impostazioni delle variabili nella funzione, perché le accetti come parametri? – Fering

risposta

0

si consiglia di provare in questo modo: -

for(x=low;x<=high;x++) 
{       //Use brackets since you are redefining low and high inside the function 
delta_x = x+delta_x; 
ans = delta_x*s; 
} 

o

for(x=low;x<=high;x++) 
{       //Use brackets since you are redefining low and high inside the function 
delta_x = x+delta_x; 
} 

EDIT: -

Si dice "riferimento non definito a 'WinMain @ 16'"

Assicurarsi di avere main() or WinMain() definito. Verificare inoltre che main() non sia definito all'interno del proprio spazio dei nomi

+0

Cosa intendi? [Noob here ... sorry :(] Le istruzioni dicono di * testarlo * scrivendo una funzione principale, ma dovrei solo inserirne uno che contenga solo la funzione intergrateF ... – CodeNewb

+0

Non l'ho capito molto chiaramente. pensa che manchi la funzione main() poiché l'errore che stai ricevendo è per questo! –

5

Si sta ridefinendo il basso e l'alto all'interno della funzione che si scontrano con quelli definiti nei parametri.

Il ciclo sta facendo

for(x=low;x<=high;x++) 
{ 
    delta_x = x+delta_x; 
} 

volevi dire che faccia

for(x=low;x<=high;x++) 
{ 
    delta_x = x+delta_x; 
    ans = delta_x*s; 
} 

Tuttavia penso che si voleva fare ans += delta_x*s;

0

low e high sono già passate come parametri di il tuo metodo integrateF. Ma sono stati riprogrammati di nuovo all'interno del metodo. Quindi l'errore.

0

L'errore è perché si dichiara basse e alte due volte vostro metodo dovrebbe essere qualcosa di simile

double integrateF(double low, double high) 

{ 
    low = 0; 
    high = 20; 
    double delta_x=0; 
    double x, ans; 
    double s = 1/2*exp((-x*x)/2); 

    for(x=low;x<=high;x++) 
    { 
    delta_x = x+delta_x; 
    ans = delta_x*s; 
    } 
    return ans; 

}

0

bassa e alta sono già passati come parametri del vostro metodo di integrateF e vengono nuovamente dichiarati all'interno del metodo ..

E x non viene assegnato un valore quando si utilizza per il calcolo di s ..


doppio x, ans; double s = 1/2 * exp ((- x * x)/2);


+0

Ma nel ciclo for, x parte da "basso" ...? – CodeNewb

+0

ma il calcolo di s è fuori dal ciclo na? –

+0

double s = 1/2 * exp ((- x * x)/2); // qui il valore di x non viene assegnato .. per (x = basso; x <= alto; x ++) { delta_x = x + delta_x; ans = ans + (delta_x * s); } –

0

quando si è dichiarato il tipo di dati nei Parametri, non è necessario re-dichiararli.

invece di

double integrateF(double low, double high) 
{ 
    double low = 0; 
    double high = 20; 
    . 
    . 
    . 
} 

si dovrebbe fare in questo modo

double integrateF(double low, double high) 
{ 
    low = 0; 
    high = 20; 
    . 
    . 
    . 
} 
Problemi correlati