for schleife und "nur zahlen drücken"



  • Hallo ich bin neu hier und habe es mit der Suche versucht und muss sagen das diese miserabel ist ode rich zu dumm bin sie richtig zu benutzen. Also mit Anführungzeichen usw hat alles nicht geklappt...

    Ich kann mir kaum vorstellen das noch keiner das Problem hatte aber gut.

    1. Frage
    Warum funktioniert folgender Code nicht :

    // Aufgabe B
      m = 0;
      n = StrToInt(Zahl->Text)-1;
      for (i=n; i<=2; i--)
      {
        hv = true;
        for (j=2; j>=n; j++)
        {
          if (i % j == 0)
          {
            hv = false;
            break;
          }
        }
        if (hv)
        {
          m += i;
        }
      }
      losb->Caption = IntToStr(m);
    

    Legt euch ein edit,label und ein button an und versucht es.
    Er springt nicht in die for-schleife und ich seh da keinen Fehler 😞

    2. Frage
    Wie kann man diesen in Delphi geschriebenen Code-Schnipsel zur Keyabfrage in C++ schreiben. Ich habe auch hier versucht es mit C-Syntax zu konvertieren... lieder erfolglos

    if not (Key in [#8,#48..#57]) then
     Key := #0;
    

    Danke für eure Unterstützung 😉



  • Legt euch ein edit,label und ein button an und versucht es.
    Er springt nicht in die for-schleife und ich seh da keinen Fehler

    Wozu ???
    Es gibt einen Debugger-> nutze diesen -> schau dir die lokalen Variablen an und prüfe was das Programm macht.

    Schön wäre ja uach gewesen, wenn du gesagt hättest mit welchen Eingaben du schon gearbeitet hast, den aufgrund von

    n = StrToInt(Zahl->Text)-1;
    for (i=n; i<=2; i--)

    wird die Schleife wohl nicht mit jeder Eingabe arbeiten.

    Aber wie gesagt, der Debugger sagt dir das dann. Es gibt hier auch eine Hilfe wo drin steht wie man den Debugger benutzt.....



  • Achja und Teil 2:

    if(!(Key==8||(Key>47&&Key<58)))
    {
    Key=0;
    }



  • Vielen Dank für Nr.2

    Also deinen Rat habe ich auch shcon vorher beherzigt, habe es hier vergessen hinzuschreiben. Ich bin zwar Anfänger aber Debuggne kenne ich auch 😃
    Ich habe sogar mit F8 die Punkte durchgenommen, schritt für schritt er springt einfach nicht in die For-Schleife sondenr gibt 0 aus.



  • Dann schicke mir das Projekt mal zu -> komme aber erst morgen nach dem Aufstehen dazu

    cecke@marquardtnet.info



  • Nun aufgestanden -> Mail hast du nicht?



  • shadowmasta schrieb:

    for (i=n; i<=2; i--)

    Deine Schleife läuft, solange i kleiner oder gleich 2 ist. Wenn du also mit n > 2 hier ankommst, passiert gar nichts.



  • n = StrToInt(Zahl->Text)-1;
    for (i=n; i<=2; i--)

    wird die Schleife wohl nicht mit jeder Eingabe arbeiten.

    Wird ihm doch wohl aufgrund von o.a. Posting bewusst sein? Und von der Eingabe im Editfeld wird noch 1 abgezogen



  • Christian211 schrieb:

    Wird ihm doch wohl aufgrund von o.a. Posting bewusst sein?

    Glaube ich nicht, darum hab ich's nochmal hingeschrieben. Bei Nicks, die "masta" enthalten, beobachte ich oft mehr oder weniger starke Schnallbremsen.



  • Schnallbremsen-> schön, kannt ich noch nicht

    Schön wäre ja auch gewesen, wenn du gesagt hättest mit welchen Eingaben du schon gearbeitet

    Das hatt ich eigentlich hingeschrieben, um zu erfahren, ob das mit i<=2 tatsächlich so gemeint war. Und da ich ja unter seniler Bettflucht leide, dachte ich, ich finde jetzt sein Projekt in meinem Maileingang.



  • MFK schrieb:

    shadowmasta schrieb:

    for (i=n; i<=2; i--)

    Deine Schleife läuft, solange i kleiner oder gleich 2 ist. Wenn du also mit n > 2 hier ankommst, passiert gar nichts.

    Ja also ich habe als Testwert 9 benutzt
    Die Schleife zählt doch runter warum sollte n dann nicht größer 2 sein ?
    9,8,7 .. 2

    Ich mache nen Umstieg von Delphi zu C++ ...
    Dein Comment mit "masta" zeigt nicht gerade eine kompetente Ausdrucksweise im Forum ...

    Edit: hab das Vorzeichen nun geändert und nun gehts ...

    Danke An Christian für die Hilfe



  • shadowmasta schrieb:

    Ja also ich habe als Testwert 9 benutzt
    Die Schleife zählt doch runter warum sollte n dann nicht größer 2 sein ?
    9,8,7 .. 2

    Die Zählrichtung ist in Ordnung, die Bedingung nicht. Die Schleife fängt gar nicht erst an, weil for-Schleifen ausgeführt werden, solange ihre Bedingung wahr ist. Bei n = 9 ist sie es nicht, also wird der Block komplett übersprungen.

    Dein Comment mit "masta" zeigt nicht gerade eine kompetente Ausdrucksweise im Forum ...

    Ich habe nur meine Erfahrung wiedergegeben. Und die ist nunmal die, dass es bei Leetspeak- oder Camelcase-Nicks praktisch Zeitverschwendung ist, zu antworten, und dass Leute, die sich Masta- oder Master-Nicks zulegen, häufig etwas ausführlichere Erklärungen benötigen. Und da du Christian211s ersten Hinweis auf die Fehlerursache offenbar nicht umsetzen konntest, habe ich es deutlicher hingeschrieben.

    Und anscheinend hat's ja jetzt geholfen.



  • Mein Gott bin ich alt

    Leetspeak- oder Camelcase-Nicks

    Was ist das??



  • http://de.wikipedia.org/wiki/Leetspeak
    http://de.wikipedia.org/wiki/CamelCase

    Mit letzterem meine ich aber nur willkürliche oder alternierende Großbuchstaben. "Normaler" Camelcase ist im Programmierumfeld ja nicht so selten.



  • Danke


Anmelden zum Antworten