ein paar (für euch wohl einfache) Aufgaben mit dem c++-builder(borland)



  • Sers!

    danke, für deien Hilfe!

    mein Problem isch, dass ich keine Ahnung hab wie ich des Ereignis OnTimer verwende...in der Hilfe find ich da au nix zu..

    die Variablen deklarier ich eich meistens oben - unser Lehrer meinte des wär übersichtlicher

    den logischen Fehler hab ich behoben, danke!
    Fehler zeigt er jetzt au keine mehr an

    des einzige Problem: des Label blinkt noch nicht...

    Timer1->Enabled = true;
       while(t < 10)
          {
          Label1->Color = clRed;
          t++;
          }
       while(t > 10)
          {
          Label1->Color = clBlack;
          t++;
          if(t == 9)
             {
             t = 0;
             }
          }
    

    AnNi



  • AnNi schrieb:

    mein Problem isch, dass ich keine Ahnung hab wie ich des Ereignis OnTimer verwende...in der Hilfe find ich da au nix zu..

    Drücke in CBuilder F1 und gebe das im Index ein "OnTimer,Beispiel".



  • AnNi schrieb:

    while(t > 10)
          {
          Label1->Color = clBlack;
          t++;
          if(t == 9)
             {
             t = 0;
             }
          }
    

    Hi,
    eigentlich ist das ja total unwichtig für dein Vorhaben, allerdings möcht ich nochmal deine Logik in Frage stellen. Wenn t größer als 10 ist und dann immer größer wird, wann kann t dann 9 sein? Gibt es etwa eine Zahl die gleichzeigt größer als 10 und gleich 9 ist? Wenn dem so ist, möchte ich diese bitte erfahren 😉

    MfG

    Alexander Sulfrian



  • mhh.. joa - die haben da schon ein Beispiel - aber wie stell ich da ein, dasses nach 2s die farbe in die eine udn nach 2 sekunden wieder in die andre Farbe wechselt?
    ich mein, wenn ich des beim Timer reinschreib

    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    x = StrToInt(Edit1->Text);
    while(x > 10);
     {
     //farbe wechseln
     }
    }
    

    da hab ich doch danns gleiche Problem??

    AnNi


  • Mod

    Hallo

    was macht denn der Timer so
    (2s)

    in Timer1Timer machst du dann was du willst
    einmal Farbe = xxx
    dann Farbe = yyy

    schau dir mal das mit den Timern genau an
    (wurde dir doch schonmal geraten oder)

    Mfg
    Klaus



  • Hast du dir eigentlich mal irgendwie die Hilfe durchgelesen?

    Beschreibung

    Die Eigenschaft Interval legt fest, wie häufig das Ereignis OnTimer auftritt. Das Ereignis tritt nach jedem Ablauf des festgelegten Zeitabschnitts ein.

    Mit dieser Eigenschaft können Sie die Zeitabschnitte zwischen OnTimer-Ereignissen angeben. Der Vorgabewert ist 1000 (eine Sekunde).

    Deine komische while() ist absolut überflüssig für den Farbwechsel.
    Einfach Abfragen. Ist Farb1 gesetzt, dann setze Farb2, wenn Farbe2, dann setze Farbe1. Das bekommt man in einer Zeile Code hin 🙂

    Und zu deinem Zufallszahlen.... Ne Schleifedurchgehen und per if abzufragen, ob die Zahl grösser ist als die Vorherige solltest schon hinbekommen. Sonst haste es verdient durchzufallen :p



  • [quote="Alexander Sulfrian]Hi,
    eigentlich ist das ja total unwichtig für dein Vorhaben, allerdings möcht ich nochmal deine Logik in Frage stellen. Wenn t größer als 10 ist und dann immer größer wird, wann kann t dann 9 sein? Gibt es etwa eine Zahl die gleichzeigt größer als 10 und gleich 9 ist? Wenn dem so ist, möchte ich diese bitte erfahren 😉

    MfG

    Alexander Sulfrian[/quote]
    jetzt passts vom logischen her - naja, geht trotzdem ned - müsste aus der schleife irgendwie wieder rauskommen.. naja

    while(t < 10)
          {
          Label1->Color = clRed;
          t++;
          }
       while(t > 10)
          {
          Label1->Color = clBlack;
          t++;
          if(t > 20)
             {
             t = 0;
             }
          }
    

    --------
    mh... habs mal so probiert - geht aber au ned, zeigt aber au kein fehler an...warscheinlich für dich absolut einfach - für mich halt ned...wir hams no ned sehr lange an der schule und machn im Unterricht immer relativ einfache Sachen, inner Klassenarbeit kommt dann sowas dran(des is halt ne Aufgabe aus der Parallelgruppe..)

    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Interval = 500;
    
    if(Label1->Color == clBlack)
       {
       Label1->Color = clRed;
       }
    if(Label1->Color == clRed)
       {
       Label1->Color = clBlack;
       }
    }
    //---------------------------------------------------------------------------
    

    was ist daran falsch?/Wo liegt der Fehler?

    AnNi



  • __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Timer1->Enabled = true; // Setz das direkt in der Komponente
    }
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Interval = 500; // Setz das direkt in der Komponente
    if(Label1->Color == clBlack)
       {
       Label1->Color = clRed;
       }
    // Was bitte machst du denn hier?
    // Vom eben gesetzten Rot sofort wieder Schwarz?
    // Logik 6, setzen!
    // benutze mal "else if" ;)
    if(Label1->Color == clRed)
       {
       Label1->Color = clBlack;
       }
    }
    

    AnNi schrieb:

    was ist daran falsch?/Wo liegt der Fehler?

    Siehe oben.



  • wohoo, es geht!
    danke!

    AnNi



  • label blinken lasse?
    on timer routine oder net?

    //timer auf 200
     if(Label1->Font->Color== clBlack)
      Label1->Font->Color = clRed;
     else
      Label1->Font->Color = clBlack;
    

    und dann die aufgabe mit dem größten ist ganze easy

    int max_zahl = 0;
    int vec[50];
    // array füllen kannste oder?
    for(int i=0  i<50 ; i++)
     vec[i] = random (100)+1;
    for(int i=0  i<50 ; i++)
     if(vec[i]>max_zahl)
      max_zahl = vec[i];
    cout << max_zahl << endl;
    //oder inne lisbox oder ShowMessage("größte zahl: " + max_zahl);
    


  • Sers!

    des erste hab ich jetzt hinbekommen - bei deinem 2ten check isch garnix *gg*
    sry, bin no totaler Anfänger

    ich würde des Problem versuchen so zu lösen, dass ich mir meine Zufallszahlen erstelle und se dann durch ne Schleife laufen lasse die jeweils schaut, welche Zahl größer ist und diese Zahl dann inne variable legt
    nach 50 durchgängen dann stoppt

    meine Frage no dazu:
    wie krieg ich es hin, dass es mir mit Hilfe vonner Schleife die Zahlen in eine ListBox packt(ohne, dass ichs 50 mal schreiben muss)?

    AnNi


Anmelden zum Antworten