Wurzelfunktion sqrt



  • Hi Leute, ich soll im Folgenden ein Programm schreiben, welches die Fläche für ein dreieckförmiges Segel berechnet. Formeln wurden dabei vorgegeben, da wir ja noch am Anfang des Studiums sind. Programm ist auch soweit fertig, jedoch gibts dummerweise ein Problem ausgerechnet in der Zeile mit der Wurzelfunktion:

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main()
    {
        double a,b,c,x,y;
        cout << "Diese Programm berechnet die Flaeche eines dreieckfoermigen Segels:" << endl
        << endl;
        cout << "Geben Sie nachfolgend die Lieklaenge a ein..." << endl;
        cin >> a;
        cout << "Geben Sie nachfolgend die Lieklaenge b ein..." << endl;
        cin >> b;
        cout << "Geben Sie nachfolgend die Lieklaenge c ein..." << endl;
        cin >> c;
        x=(a+b+c)/2;
        y=sqrt(x-a(x-b)(x-c));//Hier meldet der compiler einen Fehler...
        cout << endl << "Die Flaeche fuer das Segel betraegt : " << y << " cm^2!" << endl;
        cin.get();cin.get();
        return 0;
    }
    

    Vielen Dank für potentielle Ratschläge...



  • boenz666 schrieb:

    Programm ist auch soweit fertig, jedoch gibts dummerweise ein Problem ausgerechnet in der Zeile mit der Wurzelfunktion:

    du hast vergessen zu erwähnen, was genau das problem ist.



  • Wäre gut wenn du den fehler näher beschreiben würdest 😉
    Was aber auffällt ist

    #include <cmatch>
    

    anstatt

    #include <math.h>
    

    Das sind die C-Header.
    Das "return 0" kann man sich bei der main sparen, ist aber nicht so wichtig



  • Hey Danke schonmal für die Antworten.

    Mit dem return weiß ich, zumindest seit dem Beitrag, der hier gerade mit dem menschlichem Code rumgeistert, jedoch bestehen Prof's da immer der Vollständigkeit halber drauf.

    Der Fehler ist der, dass das Kompilieren nicht über die Zeile mit der Wurzelfunktion hinausgeht, ich denke mal da steckt ein total blöder Anfängerfehler drin??

    Mit der Math.h Bibliothek wurde uns in der Aufgabe vorgegeben, dass andere kenne ich leider noch nicht, sorry...



  • Wahrscheinlich sagt dir die Fehlermeldung des Compilers noch nicht viel, es wäre aber sicherlich hilfreich, diese mitzuteilen.

    Ab nach groben Überfliegen:

    Du musst alle Operationen, die durchgeführt werden sollen auch angeben.

    a(x-b)
    

    besagt, dass die Funktion a mit dem Ergebnis aus x-b aufgerufen werden soll.

    a*(x-b)
    

    ist das, was du suchst.

    Grüße... Heiko

    Edit (da mein Akku gerade voll ist):

    der Unterschied zwischen cmath und math.h ist vor allem der, dass die Funktionen im Namensraum std (genau wie zum Beispiel cout und cin aus iostream) definiert wurden und sind daher vorzuziehen.

    Variablen/Objekte dürfen dort deklariert/definiert werden, wo sie benötigt werden. Es ist nicht notwendig "Wegwerf"Variablen am Anfang einer Funktion zu deklarieren. Weiterhin darfst du jeder Variable auch eine eigene Zeile gönnen. So kann man diese, wenn sie nicht selbstsprechend ist auch gleich kommentieren. Des Weiteren sparst du dir drei graue Haare, wenn es zum Thema Zeiger geht 😉

    Wenn es vollständig sein soll, dann schon

    return EXIT_SUCCESS;
    

    :D, just to avoid magic numbers.



  • Die Fehlermeldung lautet:

    Zeile 18: 'a' cannot be used as a function



  • Eben... siehe oben



  • Jo Danke, jetzt geht alles super, Anfängerfehler wie gesagt.

    Vielen Dank euch bis zum nächsten Problemchen... 😉


Anmelden zum Antworten