Grundproblem in C++



  • Hallo ihr lieben Leute,

    ich hab mal wieder ein Problem mit c++. Ich soll ein Programm erstellen, was mir wahlweise den sinus, Cosinus oder den Tangens von einer Zahl berechnet und ausgibt. Wie ich die Elemente (2 Textfelder, 3 Schaltflächen zum Beispiel) in das Hauptprogramm bekomme, weiß ich, auch die Standardfunktionen und Prototypen kenne ich, aber ich hab's ewig probiert und weiß nicht, wie ich die Zahl aus dem Eingabefeld übernehme, den Wert berechne und das ganze im nächsten Feld ausgebe. Kann mir bitte jemand von euch mal einen Vorschlag für den Quelltext schicken? Ich brauch es bis morgen

    Liebe Grüße, Elli.



  • Was benutzt du ueberhaupt fuer eine GUI Library? MFC? VCL? ...?



  • Hi elli,
    erstmal solltest du uns noch verraten, mit welchem Framework du arbeitest. Standard C++ kennt nunmal keine grafischen Oberflächen und damit auch keine Eingabefelder.
    Was die Funktionen betrifft, das ist relativ einfach. Nehmen wir mal an, dass du einen double Wert (ausgangswert) hast, welcher aus dem Eingabefeld stammt, dann kannst du den Sinus wie folgt berechnen

    double ergebnis = std::sin(ausgangswert);
    

    Das gleiche funktioniert mit Cosinus (std::cos) und Tangens (std::tan). Dabei ist lediglich zu beachten, dass die Funktionen die Werte in Radians erwarten. Anfänger machen oft den Fehler, die Angaben in Grad zu machen. Eine Umwandlung ist jedoch nicht schwer

    const double pi = 3.1415926535897932384626433832795;
    
    double deg_to_rad(double x)
    {
    	return x * pi / 180;
    }
    


  • Wie ich die Elemente (2 Textfelder, 3 Schaltflächen zum Beispiel) in das Hauptprogramm bekomme, weiß ich, auch die Standardfunktionen und Prototypen kenne ich, aber ich hab's ewig probiert und weiß nicht, wie ich die Zahl aus dem Eingabefeld übernehme, den Wert berechne und das ganze im nächsten Feld ausgebe.

    1. Falsche Abteilung. Hier Standard C++.
    2. Wird wohl keiner Hausaufgaben machen (zumindest nich umsonst).

    Aber hier schon mal ein Anfang:

    #include <math>
    


  • Naja, ich benutze C++ 5 und mache keine Konsolenanwendung, sondern die objektorientierte Programmierung, das heißt mit Befehlsschaltflächen und Textfeldern.

    Include <math.h> hab ich schon gedunden, asak. Auch die Prototypen für die Funktionen. Aber wie nehme ich den Wert aus dem Eingabefeld, damit ich damit weiterrechnen kann. Es ist sicher keine komplizierte Lösung, da wir erst vor 3 Wochen mit der objektorientierten Programmierung angefangen haben (vorher Konsolenanwendung). 😞



  • Der Begriff objektorientierte Programmierung hat nichts mit den sichtbaren "Objekten" zu tun.Du meinst sicherlich fertige Komponenten-Klassen
    wie beim Borland Builder.
    Ich nehm mal an Borland Builder ?



  • Aber wie nehme ich den Wert aus dem Eingabefeld, damit ich damit weiterrechnen kann.

    Beim BCB geht das so.

    float zahl = StrToFloat(Edit1->Text);
    


  • bestimmt Borland C++ 5.02. also nicht den builder.



  • Ja, Borland C++ Builder nennt der sich, sorry! 🙂 Super asak, danke - ich glaub, das ist das, was mit gefehlt hat. Und wie bekomme ich das Ergebnis im Zweiten Textfeld zur Ausgabe?



  • Edit2->Text = FloatToStr(sin(StrToFloat(Edit1->Text)));
    


  • elli1985 schrieb:

    Ja, Borland C++ Builder nennt der sich, sorry! 🙂 Super asak, danke - ich glaub, das ist das, was mit gefehlt hat. Und wie bekomme ich das Ergebnis im Zweiten Textfeld zur Ausgabe?

    Dann hast du aber im falschen Forum gefragt. Dafür gibts ein Extra-Forum.



  • Dann hast du aber im falschen Forum gefragt. Dafür gibts ein Extra-Forum.

    Das kann ein Mod wieder richten.



  • *lol* @ Überschrift



  • ...und das kommt dann alles in den Teil, wo ich die Aktionen schreibe, wenn ich auf den jeweiligen Button klicke, oder?

    Elli.



  • Ja du hast deine 3 Buttons (sin,cos,tan) und jeweils im OnClick Ereignis kommt dann der Code:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       float zahl = StrToFloat(Edit1->Text);
       Edit2->Text = FloatToStr(sin(zahl));//hier entsprechend in cos,tan ändern
    }
    


  • Btw, die richtige Header Datei heisst weder <math> noch <math.h>, sondern <cmath>. Das ist insofern wichtig, da es weder sinf(float), sinl(long double) und Co gibt, sondern überladene Funktionen. Also sin(float), sin(double), sin(long double) und Co.



  • groovemaster schrieb:

    Btw, die richtige Header Datei heisst weder <math> noch <math.h>, sondern <cmath>. Das ist insofern wichtig, da es weder sinf(float), sinl(long double) und Co gibt, sondern überladene Funktionen. Also sin(float), sin(double), sin(long double) und Co.

    fürs Ergebnis absolut unerheblich und einfach nur spitzfindig.



  • groovemaster schrieb:

    Btw, die richtige Header Datei heisst weder <math> noch <math.h>, sondern <cmath>. Das ist insofern wichtig, da es weder sinf(float), sinl(long double) und Co gibt, sondern überladene Funktionen. Also sin(float), sin(double), sin(long double) und Co.

    vewirr das mädchen nicht!
    dürfte sie schon genug sein... 😡



  • Groovy ist schlecht drauf die Woche, hab ich schon gestern gemerkt.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ........ schrieb:

    fürs Ergebnis absolut unerheblich

    In diesem Fall mag das so sein, da bei float -> double keine Genauigkeit verloren geht. Bei double -> long double kann das aber schon ganz anders aussehen. Zumal kannst du durch bessere Typkonsistenz evtl auch bessere Optimierungsmöglichkeiten deinem Compiler ermöglichen. Ausserdem wurde die Frage ins Standard C++ Forum gepostet und <math.h> wird dort nunmal als deprecated eingestuft. Was soviel heisst, dass die Header Datei in zukünftigen 🙂 Standards uU nicht mehr verfügbar sein wird. Du siehst also, mit Spitzfindigkeit hat das nichts zu tun. Es gibt halt triftige Gründe, warum man sich solche Nachlässigkeiten erst gar nicht angwöhnen sollte. Da Hume den Thread aber mittlerweile verschoben hat, soll's mir auch egal sein.

    Beobachter schrieb:

    Groovy ist schlecht drauf die Woche, hab ich schon gestern gemerkt.

    Ist mir noch gar nicht aufgefallen. Hab ich was verpasst? Und dabei ist doch erst Dienstag. 😃


Anmelden zum Antworten