2016-03-24 4 views
0

Ich bekomme den Fehler ungültige Operanden der Typen 'float' und 'int' zu binären 'operator ^' und ich bin nicht sicher, wie esFehler: ungültige Operanden der Typen 'float' und 'int' zu binären 'operator ^'

der Fehler tritt in der Funktion f, in der letzten Zeile zu beheben

Jede Hilfe ist sehr geschätzt

#include <iostream> 
#include <cstdio> 
#include <cstdlib> 
#include <cmath> 


using namespace std; 
float f(float x); 

int main() 
{ 

    float a; 
    float b; 
    int n; 
    float h; 
    float x; 
    float area; 

    cout << "Please input the first limit: "; 
    cin >> a; 
    cout << "Please input the second limit: "; 
    cin >> b; 
    cout << "How many rectangles do you want to use? "; 
    cin >> n; 

    h = (b-a)/n; 

    area = (f(a)+f(b))/2; 

    for (int i=1;i<n;i++) { 
     area += f(a+i*h); 
    } 

    area = area*h; 
    cout << "The area under the curve of f(x) = (2/sqrt(3.14))(exp(-x^2)) is "; 
    cout << area; 
} 

float f(float x){ 
    return (exp(-x^2))(2/sqrt(3.14)); 
} 
+1

'exp (-x^2)' tut nicht, was Sie denken. – drescherjm

Antwort

2

xfloat den Datentyp hat. Sie haben den logischen XOR-Operator darauf angewendet. XOR benötigt ganzzahlige Operanden.

Ich vermute, Sie suchen nach einem Exponenten, obwohl. C++ hat keinen Exponentenoperator. Stattdessen versuchen, etwas wie folgt aus:

float f(float x){ 
    return (exp(-(x*x)))*(2/sqrt(3.14)); 
} 

Ich gehe davon aus, dass Sie exp(-(x*x)) von (2/sqrt(3.14) zu multiplizieren bedeuten, aber ich habe keinen Multiplikationsoperator dort sehen.

+0

Erläuterung: '^' ist der XOR-Operator, kein Potenzoperator. – Logicrat

+1

Erwähnenswert ist "pow". –

+0

@ChristianHackl Guter Punkt. 'pow (x, n)' gibt * x * zur * n * -ten Potenz zurück. Persönlich verwende ich niemals 'pow()' für Quadrate, aber ich stimme zu, dass es gut ist, sich dessen bewusst zu sein. – Logicrat

Verwandte Themen