Trigonometrie und Potenzfunktionen in C++



  • Wie würde denn dann das Beispiel 5*8^3 heißen? Ich mach nämlich noch irgendetwas falsch, da immer der Fehler "Ausdruckssyntax" kommt!

    Vielen Dank

    freakC++



  • Na dann zeig mal, was du genau machst.



  • So funzt es bei mir im C++ Builder 5 und im Turbo C++ Explorer 2006.

    #include <math.h>
    
    double a,b,c,d;
    a = 5;
    b = 8;
    c = 3;
    d = a * pow(b,c);
    


  • Hallo

    Doc Compliziert schrieb:

    Is ja toll das man da cmath.h nimmt unser Lehrer hat gesagt man nimmt immer math.h.
    Also mit math.h gehts auch, bei mir jedenfalls.

    Nein nicht cmath.h sondern nur cmath wie bei allen Headern der Standard-Lib.

    Und nur weil etwas compiliert ist es noch lange nicht korrekt.

    bis bald
    akari



  • Wenn ich diesen Wert dann in einem Meldungfenster (MessageBox) darstellen möchte, kommen bei mir folgende Fehler:

    [C++ Warnung] Unit1.cpp(32): W8004 'GM' wurde ein Wert zugewiesen, der nie verwendet wird

    [C++ Fehler] Unit1.cpp(31): E2015 Mehrdeutigkeit zwischen '_fastcall Sysutils::IntToStr(__int64)' und '_fastcall Sysutils::IntToStr(int)'

    Dies passiert aber erst, nachdem ich diese Potenzfunktion gemacht habe. So hieß es bei mir ursprünglich:
    Application->MessageBox (IntToStr (GM).c_str (), "Für R = 6 und V = 240:", 0);

    GM ist hier das Ergebnis (ich hatte dieses Thema mit dem Meldungsfenster schonmal angesprochen^^)

    Weshalb kommen diese Fehler und warum kann das Ergebnis, das ich in GM darstelle nicht mehr in der MessageBox angezeigt werden??

    Vielen Dank
    freakC++



  • Hallo

    Es wäre natürlich sehr hilfreich den Code zur Fehlermeldung zu posten...
    Ausgehend von den letzten Posts ost GV ein double, weshalb der Compiler sich nicht entscheiden kann welche der beiden in den Fehlermeldungen angegebenen IntToStr-Varianten er nehmen soll.
    Also entweder kopierst du GV erstmal in einen int oder du verwendest anstelle von IntToStr eben FloatToStr.

    bis bald
    akari



  • Hey,
    Vielen,vielen Dank!!! Alles klappt (fast) perfekt. Ein Ergebnis kommt in der MessageBox und jegliche Fehler sind verschwunden. Leider gibt es noch ein kleines Manko (bitte gebt die Hoffnung bei mir nicht auf 😃 ). Das Ergebnis ist falsch. Irgendwasn stimmt also noch nicht. Ich poste nochmal den Quelltext:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {

    R = 6;
    V = 240;
    POT = 0,5;
    GM = V * pow(POT,R);

    Application->MessageBox (FloatToStr (GM).c_str (), "Für R = 6 und V = 240:", 0);
    }

    POT ist die Potenz. Das Ergebnis (für die Aufgabe GM = 240 * 6^0,5) ist 587,8775. Leider kommt bei mir 240, also V heraus! Was stimmt denn nicht?

    Vielen Dank und lg, freakC++

    PS. Da ich noch Anfänger bin, die wahrscheinlich blöde Frage: Mit welchen Befehl kopiere ich denn etwas in einen int??



  • POT = 0.5;



  • Hey, vielen Dank!! Alles funktioniert nun perfekt!! Ihr seit echt gut!!! Ich möchte nun das Ergebnis auf zwei Stellen runden. Ich weiß, dass das theoretich so geht:
    FloatToStrF (GM, ffNumber, 8, 2);

    Wie baue ich das denn nun ich meine MessageBox ein ( Application->MessageBox (FloatToStr (GM).c_str (), "Für R = 6 und V = 240:", 0);

    Muss ich das GM.c_str () irgendwie in Klammern setzen oder nicht??
    Ich danke euch!

    lg, freakC++



  • Am besten wohl eher in der Art:

    AnsiString Titel = "Für R = " + AnsiString(R) + " und V = "+ AnsiString(V);
    AnsiString Nachricht = FloatToStrF(GM, ffNumber, 8, 2);
    Application->MessageBoxA(Nachricht.c_str(), Titel.c_str(), MB_OK);
    

    Und verwende keine Magic-Numbers...



  • Was bedeutet denn AnsiString??

    Vielen Dank,
    freakC++



  • Hallo

    AnsiString ist ein Datentyp der VCL des Builders. Häheres findest du in der Builder-Hilfe zum Stichwort.

    bis bald
    akari



  • Vielen Dank!!! Werds mir gleich anschauen. Ich weiß nicht wie es hier im Forum zu geht, da ich immer weiter und weiter frage. Ist das ok oder soll ich einen neuen Thread eröffnen? Es ist nämlich so, dass die MessageBox viel zu klein erschein, sodass der Titel gar nicht ganz drauf ist. Was kann ich tun??

    Vielen Dank für eure tolle Hilfe

    lg, freakC++



  • Hallo

    Solange die Fragen noch zum Thema passen ist es okay. Fragen zur MessageBox bitte in einen neuen Thread.

    bis bald
    akari


Anmelden zum Antworten