“… opnieuw-gesloten als een ander soort symbool”?

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%

lowEN highworden 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;
    .
    .
    .
}

Other episodes