Schnelle Hilfe !!! Danke !!!



  • Ich will eine Gleichung mit meinem Borland C++ Builder programmieren.

    y= ax2 + bx + c

    Ich habe irgendwie ziemliche Probleme, da das mit dem Memo nicht richtig
    funktioniert.

    So sieht es aus:

    //---------------------------------------------------------------------------
    #include <vcl\vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma resource "*.dfm"
    TForm1 Form1;
    int a, b, c, xMin, xMax, y, x, s, dummy;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent
    Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    a = StrToInt (Edit1->Text);
    b = StrToInt (Edit2->Text);
    c = StrToInt (Edit3->Text);
    xMin = StrToInt (Edit4->Text);
    xMax = StrToInt (Edit5->Text);

    for (int x=xMin; x<=xMax; x++)
    String (dummy) = String (x) +" "+ String (y);

    x= xMin;
    y = a*x*x + b*x + c;

    Memo1->Lines->Add(String(dummy));
    }
    //---------------------------------------------------------------------------

    Das Bild findet ihr hier:

    http://people.freenet.de/fusionworld/c++.jpg



  • "Funktioniert nicht" ist keine ausreichende Fehlermeldung oder Problembeschreibung.

    Und wenn du dir überlegt hast, was genau das Problem ist, dann kannst du auch eine aussagekräftige Überschrift formulieren.



  • int a, b, c, xMin, xMax, y, x, s, dummy;

    das gehört in die Header-Datei des Forms unter public: oder private:...

    String (dummy) = String (x) +" "+ String (y);
    Was soll die Zeile bewirken??

    Eventuell das hier?

    for (int x=xMin; x<=xMax; x++)
    {
       y = a*x*x + b*x + c;
       Memo1->Lines->Add(AnsiString(x) + " " + AnsiString(y)); 
    }
    


  • Es ändert sich nichts.
    Das Problem liegt beim Memo.
    Im Memo sollen die Variablen x und y nebeneinander stehen.

    Borland zeigt mir aber nur y an.

    Wie kann man denn in einem Memo mehrere Variablen oder Zahlen nebeneinander stehen haben ???



  • Indem du sie in eine Zeile, d.h. beide in einen String schreibst bzw. sie zu einem String zusammenfasst!?



  • das habe ich doch oben schon gemacht.



  • Ist schon komisch, Metroid,

    ich hab's gerade ausprobiert, mein Beispiel funktioniert einwandfrei...

    Noch mal die ganze Button1-Funktion:

    a = StrToInt (Edit1->Text); 
       b = StrToInt (Edit2->Text); 
       c = StrToInt (Edit3->Text); 
       xMin = StrToInt (Edit4->Text); 
       xMax = StrToInt (Edit5->Text); 
       for (int x=xMin; x<=xMax; x++)
       {
          y = a*x*x + b*x + c;
          Memo1->Lines->Add(AnsiString(x) + " " + AnsiString(y)); 
       }
    


  • Bei mir funkts jetzt auch einwandfrei !!!!!!!

    Danke

    Metroid 😃



  • achso, mit String(dummy) erzeugst Du einen temporären String aus dem Wert dummy.

    Um einen Ausgabestring zu erzeugen, mußt Du ihn auch deklarieren, zb mit:

    AnsiString OutString;
    
    for (int x=xMin; x<=xMax; x++)
    {
      y = a*x*x + b*x + c;
      OutString = AnsiString(x) + " " + AnsiString(y); 
      Memo1->Lines->Add(OutString);
    }
    

    Wenn Du erst alle Ausgabestrings zwischenpuffern möchtest, bevor Du sie dem Memo zuweist: Schau Dir mal TStringList an...

    AnsiString OutString;
    TStringList* slTemp = new TStringList();
    
    for (int x=xMin; x<=xMax; x++)
    {
      y = a*x*x + b*x + c;
      OutString = AnsiString(x) + " " + AnsiString(y); 
      slTemp->Add(OutString);
    } 
    Memo1->Text = slTemp->Text;
    delete slTemp;  // wichtig, dynamisch erzeugte Objekte auch wieder löschen...
    


  • metroid schrieb:

    das habe ich doch oben schon gemacht.

    Eben nicht. Mit String (dummy) = String (x) +" "+ String (y); hast du (implizit) einen temporären String mit dem (umgewandelten) Wert von dummy erzeugt und ihm anschliessend x+y zugewiesen.
    Dadurch hat sich am Wert des Integer dummy aber nichts geändert.


Anmelden zum Antworten