Problem mit Berechnungen und Ausgabe



  • Hallo,
    ich bastel mir Gerade ein Programm mit Visual C++ 2008 Forms kann aber nicht wirklich programmieren. In PHP läuft das Programm schon länger aber da arbeite ich ja mit $xy = $_POST etc.

    Ich habe mehrere textBoxen wie zb Box1 Wasservolumen netto box 2 Aktueller xy Wert box 3 gewünschter xy wert box 4 aktueller xyz wert box 5 gewünschter xyz wert usw

    dann einen Button namens Button2

    Nach eingabe der Werte soll nach drücken auf den button in einer textbox 8 das ergebnis aus der Bereichnung box3 - box2 * box1 / 1000 * 147.1 / 40.1 stehen
    Auch soll bei der Button Betätigung in textbox9 dann eine berechnung paralel zur ersten ausgebenen werden wie box5-box4 * box1 / 1000 * 45 / 211 etc.

    Ich hab aber das Problem ich weiß nicht wie ich das schreiben soll das die textboxen zur Berechnung herangezogen werden.

    Einen beispiel code habe ich hier schon gesehen der wie folgt aussieht:

    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) 
    { 
       textBox2->Text = (((Convert::ToDouble(textBox1->Text) * 9) / 5.0) + 32).ToString(); 
    }
    

    ich habs so versucht aber das klappt nicht:

    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) 
    { 
    textBox8->Text = (((Convert::ToDouble(textBox3->Text) - (textBox2->Text) * (textBox1->Text) / 1000) * 147.1) / 40.1).ToString();
    }
    

    Was mach ich denn falsch? Danke schonmal für eure Hilfe.

    LG Matze



  • Matzaton schrieb:

    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) 
    { 
    textBox8->Text = (((Convert::ToDouble(textBox3->Text) - (textBox2->Text) * (textBox1->Text) / 1000) * 147.1) / 40.1).ToString();
    }
    

    Was mach ich denn falsch? Danke schonmal für eure Hilfe.

    (((Double - String * String / 1000) * 147.1) / 40.1)
    

    ich hoffe das hilft Dir ... schau Dir am besten nochmal das Beispiel an



  • Hi und danke Mogel,

    aber nee ich raffs nicht. 😞 Habs probiert aber ich glaub ich scheitere schon an Strings

    hatte ja zwischenzeitlich weiter im google gesucht und folgendes Probiert aber das geht auch nicht.

    int _zahl1 = Convert::ToInt32(textBox1->Text);
          int _zahl2 = Convert::ToInt32(textBox2->Text);
          int _zahl3 = Convert::ToInt32(textBox3->Text);
    
          textBox8->Text = ((Convert::ToString(_zahl3 - _zahl2 * _zahl1 / 1000) *147.1) / 40.1);
    

    Ich glaub ich bräuchte ein beispiel wie das mit werten aus verschiedenen textboxen aussieht die berechnung.

    LG Matze

    EDIT: also in meiner PHP ist es folgendermaen aufgebaut nur den Code kann ich so ja nicht übernehmen 😞

    $ist_xy = $_POST['ist_xy'];
    $soll_xy = $_POST['soll_xy'];
    $becken_xy = $_POST['becken_xy'];
    $defizit1 = $soll_xy - $ist_xy;
    $defizit_xy = $defizit1 * $becken_xy / 1000;
    $ch = round($defizit_xy * 147.1 / 40.1, 2);
    


  • int _zahl1 = Convert::ToInt32(textBox1->Text);
          int _zahl2 = Convert::ToInt32(textBox2->Text);
          int _zahl3 = Convert::ToInt32(textBox3->Text);
    

    na ist doch schonmal super

    textBox8->Text = ((Convert::ToString(_zahl3 - _zahl2 * _zahl1 / 1000) *147.1) / 40.1);
    

    (String * Double) / Double

    Ich glaub ich bräuchte ein beispiel wie das mit werten aus verschiedenen textboxen aussieht die berechnung.

    wozu? ... Du darfst nur nicht die Datentypen mischen ... und das machst Du permanent 🙂 ... einfach nochmal tief durchatmen und kurz nachdenken

    hand, mogel



  • huh schwere geburt.

    ok hab mal nachgedacht und es so gemacht:

    int _zahl1 = Convert::ToInt32(textBox1->Text); 
          int _zahl2 = Convert::ToInt32(textBox2->Text); 
          int _zahl3 = Convert::ToInt32(textBox3->Text);
    	  textBox8->Text = (((Convert::ToDouble(_zahl3 - _zahl2 * _zahl1) / 1000) * 147.1) / 40.1).ToString();
    

    Wird auch ausgeführt aber die Berechnung ist so falsch. Denn es muss ja erst textbox3 minus textbox2 gerechnet werden dann von diesem ergebnis mal textbox1 dieses ergebnis dann durch 1000 das dann mal 147.1 geteilt durch 40.1

    Im beispiel Eingaben textbox1 325 textbox2 300 textbox3 380
    wären also 380-300 = 80 * 325 / 1000 * 141.7 / 40.1 ==91.87
    sprich auf 2 dezimalstellen müsste man das ergebnis auch noch begrenzen.

    Ich danke dir schonmal für deine weitere Hilfe!

    LG Matze



  • huh ok bin etwas weiter
    textBox8->Text = (((Convert::ToDouble(_zahl3 - _zahl2) * _zahl1) / 1000 * 147.1) / 40.1).ToString();

    puh danke jetzt muss ich nur noch rausfinden wie man auf 2 dezimalstellen rundet

    ALSO ganz dickel DANKE



  • Matzaton schrieb:

    puh danke jetzt muss ich nur noch rausfinden wie man auf 2 dezimalstellen rundet

    schau Dir mal die Klasse Format an

    Old-Style wäre das Ergebniss mal 100 - plus 0.5 - Kommastellen abhaken - durch 100 ... dann bleiben (mathematisch) genau 2 Stellen übrig

    hand, mogel



  • Hi,

    jetzt hab ich schon wieder ein Problem.
    Die Berechnung funktioniert zwar aber ich hatte es beim test nur mit ganzen zahlen probiert und jetzt wollte ichs mit einer komma Zahl probieren egal ob als komma komma oder als Punkt, das Programm bricht ab.

    Aber Warum?

    LG Matze



  • Convert::ToInt32 hast du noch wahrschinlich irgendwo im Quelltext stehen.

    String

    mogel schrieb:

    schau Dir mal die Klasse Format an

    Fast:
    ->Text = String::Format("{0:d}", (_zahl3 - _zahl2) * 1.0d * _zahl1 / 1000 * 147.1 / 40.1);



  • Das habe ich schon auf zb.

    int _zahl7 = Convert::ToDouble(textBox7->Text);
    
    textBox17->Text = (((Convert::ToDouble(_zahl7 - _zahl6) * _zahl1) / 1000) *19.067).ToString();
    

    geändert dadurch bricht das Programm zwar nicht mehr ab, aber die berechnung mit komma da ignoriert er das komma und statt komma punkt da kommen vollkommen abstrakte werte raus.



  • / 1000
    

    da werden die Kommas gleich wieder abgeschnitten ... wenn Du mit Kommas benötigst, dann musst DU auch darauf achten das Kommas erhalten bleiben

    hand, mogel


Anmelden zum Antworten