Matheprojekt Verbesserungsvorschläger erwünscht



  • Hi
    ich schreibe gerade an einem Matheprogramm, das mir automatisch die Formeln vom logistischen Wachstum angibt
    ich verwende absichtlich keine schleife

    hier mein quelltext

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    const String Dateiname = "Formeln.txt";
    TForm1 *Form1;
    float k, Bestand, Ergebnis, Schranke;
    TStringList *Formeln   ;
    int Nr;
    bool Nochmal, sicher;
    String Ausgabe;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
                       Nr = 0;
                       Nochmal = false;
                       Formeln = new TStringList;
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {  //Aufnahme der Werte
     try {
    
    if (Nochmal != true)   //wenn der Knopf nicht auf Nochmal umgestellt ist
    {  k = atof(Edit1->Text.c_str());
    Bestand = atof(Edit2->Text.c_str());
    Schranke = atof(Edit3->Text.c_str());
    
    Button1->Caption = "Weiter gehts";
    Nochmal = true;
                                //Vorbereiten des Buttons nochmal
    sicher = false;
    
    Ergebnis = k*Bestand*(Schranke -Bestand);
    // Alte Formel
       Ausgabe = "B(1)= "+ FloatToStrF(k,ffNumber,8,6)+"*"+ FloatToStrF(Bestand,ffNumber,8,6)+"*("+ FloatToStrF(Schranke,ffNumber,8,6)+ " - " + FloatToStrF(Bestand,ffNumber,8,6)+ ") = " + FloatToStrF(Ergebnis,ffNumber,8,6);
    Panel4->Caption= Ausgabe;
    Formeln->Add(Ausgabe) ;
    Bestand  = Ergebnis;
    Nr++;
    Ausgabe = "B("+ String(Nr)+")=" + FloatToStrF(k,ffNumber,8,6)+"*"+ FloatToStrF(Bestand,ffNumber,8,6)+"*("+ FloatToStrF(Schranke,ffNumber,8,6)+ " - " + FloatToStrF(Bestand,ffNumber,8,6)+")";
    Panel5->Caption = "Neue Formel:" + Ausgabe;
    Formeln->Add(Ausgabe) ;
    
    }
    if (Nochmal)
    {
        Ergebnis = k*Bestand*(Schranke -Bestand);
    // Alte Formel
    Ausgabe = "B("+ String(Nr)+")="+ FloatToStrF(k,ffNumber,8,6)+"*"+ FloatToStrF(Bestand,ffNumber,8,6)+"*("+ FloatToStrF(Schranke,ffNumber,8,6)+ " - " + FloatToStrF(Bestand,ffNumber,8,6)+ ") = " + FloatToStrF(Ergebnis,ffNumber,8,6);
    Panel4->Caption=  Ausgabe  ;
    Formeln->Add(Ausgabe) ;
    Bestand  = Ergebnis;
    Nr++;
    Ausgabe = "B("+ String(Nr)+")=" + FloatToStrF(k,ffNumber,8,6)+"*"+ FloatToStrF(Bestand,ffNumber,8,6)+"*("+ FloatToStrF(Schranke,ffNumber,8,6)+ " - " + FloatToStrF(Bestand,ffNumber,8,6)+")";
    Panel5->Caption = "Neue Formel:"+Ausgabe;
    Formeln->Add(Ausgabe) ;
       }
    }
    catch (...)
    {
    Application->MessageBox ("Fehler jeglicher Art!", "Fehler", 0+16);
    }
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Edit1->Text="";
    Edit2->Text = "";
    Edit3->Text = "";
    Panel4->Caption= "B(1) = k*B(0)*(S-B(0)";
    Panel5->Caption = "";
    Nr=0;
    Nochmal=false;
    Button1->Caption = "OK";
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Speichern1Click(TObject *Sender)
    {
        try
      {
        if (SaveDialog1->Execute ())
        Formeln->SaveToFile(SaveDialog1->FileName) ;
        sicher = true;
        }
    
        catch (...)
        {    Application->MessageBox("Fehler beim Speichern der Datei!!", "Fehler",0+16);
    }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Drucken1Click(TObject *Sender)
    {
         try
      {
        if (PrintDialog1->Execute ())
        {
          RichEdit1->Text = Formeln->Text ;
          RichEdit1->Print ("Formeln") ;
        }
      }
      catch (...)
      {
        Application->MessageBox
          ("Fehler beim Drucken der Datei!", "Achtung!", 0+48);
      }
    }
    //---------------------------------------------------------------------------
    

    jetzt würde ich aber gerne wissen wie es geht dass er zwar so viele stellen verarbeitet aber nicht immer die ganzen nuller hinten angibt

    Vielen Dank für eure Hilfe!!!



  • 1. falsches Forum (kein standard c++)
    2. globale variablen sind hässlich - weiß ich aber nicht, wie man da in deinem fall drum rum kommen könnte - man könnte die variablen aber zumindest in eine klasse kapseln (falls es von der logik her hinkommen würde)
    3. code einrücken
    4. bezeichner wie k werden üblicherweise für for-schleifen und damit als int/size_t verwendet - auf jeden fall sollte man für varialben immer sprechende namen nehmen (außer in for-schleifen, wo man idR i-k nimmt) - erst recht, wenn diese global verwendet werden...

    bb

    edit: wieso verwendet du absichtlich keine schleifen? xD



  • unskilled schrieb:

    2. globale variablen sind hässlich - weiß ich aber nicht, wie man da in deinem fall drum rum kommen könnte - man könnte die variablen aber zumindest in eine klasse kapseln (falls es von der logik her hinkommen würde)

    Was ist denn so schlimm an globalen variablen bzw. warum sind sie hässlich?



  • Don Quijote schrieb:

    Was ist denn so schlimm an globalen variablen bzw. warum sind sie hässlich?

    ➡ Gründe gegen globale Variablen



  • Ok, vielen dank.

    Ich sehe aber schon, das kommt immer auf den Umfang des Programms und die Verwendung der Variable an. M



  • Don Quijote schrieb:

    Ich sehe aber schon, das kommt immer auf den Umfang des Programms und die Verwendung der Variable an. M

    Ja, das stimmt schon. Bei kleinen Progrämmchen sind globale Variablen durchaus vertretbar. Je grösser das Projekt wird, desto gefährlicher werden sie allerdings. Meistens lassen sie sich aber gut vermeiden (jedoch nicht ganz immer)...



  • unskilled schrieb:

    wieso verwendet du absichtlich keine schleifen? xD

    weil mein mathelehrer des so wollte


Anmelden zum Antworten