Er staat dat het laag en hoog wordt “opnieuw declared als een ander type symbool” en ik weet niet wat dat betekent. Kortom, alles wat ik hier doe (lees: PROBEREN ) is integreren van lage (die ik ingesteld op 0) tot hoog (20) om de Riemann-som te vinden. De voor lus ziet er ook een beetje trippy uit … ik ben zo verloren.
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;
}
^ Dat werkt nog steeds niet, na de beugels en alles. Er staat “undefined Refement to ‘Winmain @ 16′” …
Antwoord 1, Autoriteit 100%
U herdefinieert laag en hoog in de functie die botsen met die welke in de parameters zijn gedefinieerd.
De voor lus doet
for(x=low;x<=high;x++)
{
delta_x = x+delta_x;
}
Bedoelde u het te doen
for(x=low;x<=high;x++)
{
delta_x = x+delta_x;
ans = delta_x*s;
}
Ik denk echter dat je wilde doen ans += delta_x*s;
Antwoord 2, Autoriteit 17%
low
EN high
worden al doorgegeven als parameters van uw integrateF
-methode. Maar ze worden weer opnieuw gesloten in de methode. Vandaar de fout.
Antwoord 3, Autoriteit 17%
Laag en hoog worden al doorgegeven als parameters van uw IntegrateF-methode en ze worden opnieuw ingeslagen in de methode ..
En aan x wordt geen waarde toegekend wanneer het wordt gebruikt voor de berekening van s..
dubbele x, ans;
dubbele s = 1/2*exp((-x*x)/2);
Antwoord 4
Misschien wil je het als volgt proberen:-
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;
}
of
for(x=low;x<=high;x++)
{ //Use brackets since you are redefining low and high inside the function
delta_x = x+delta_x;
}
BEWERKEN:-
Er staat “ongedefinieerde verwijzing naar ‘WinMain@16′”
Zorg ervoor dat u main() or WinMain()
hebt gedefinieerd. Controleer ook of main() niet binnen uw naamruimte is gedefinieerd
Antwoord 5
Een andere manier waarop u deze fout kunt veroorzaken, is door uw functie te “herdefiniëren” in een code waarin die naamtag al wordt gebruikt als een variabele buiten de hoofdfunctie – Like so (psuedo-code):
double integrateF = 0;
main(){
// get vars to integrate ...
}
double integrateF(double, double){
//do integration
}
Je hoeft niet eens de functie in main aan te roepen om een fout te krijgen bij het compileren, in plaats daarvan kan de compiler geen enkel idee krijgen van:
double integrateF = 0 = (double, double) { };
buiten de hoofdfunctie.
Antwoord 6
wanneer u het gegevenstype in de parameters hebt gedeclareerd, hoeft u ze niet opnieuw te declareren.
in plaats van
double integrateF(double low, double high)
{
double low = 0;
double high = 20;
.
.
.
}
je zou het zo moeten doen
double integrateF(double low, double high)
{
low = 0;
high = 20;
.
.
.
}