Schleife aber wie?



  • Hallo Leute,
    ich hab hier ein Problem, will aus diesem Programmteil eine Schleife daraus machen aber ich komm gerade echt net drauf wie ich das anstellen soll. Bitte helft mir so schnell wie möglich weiter.

    void __fastcall TForm1::Button1Click(TObject *Sender) //Button
    {
    AnsiString sEingabe = Edit1->Text;
    int sum; //Variable Summe

    AnsiString sTemp = sEingabe[1]; //Auslesen der Ziffer 1
    sum = sTemp.ToInt()*1; //Ziffer 1 wird mit 1 multipliziert

    sTemp = sEingabe[2]; //Auslesen der Ziffer 2
    sum = sum + sTemp.ToInt()*3; //Ziffer 2 wird mit 3 multipliziert

    sTemp = sEingabe[3];
    sum = sum + sTemp.ToInt()*1;

    sTemp = sEingabe[4];
    sum = sum + sTemp.ToInt()*3;

    sTemp = sEingabe[5];
    sum = sum + sTemp.ToInt()*1;

    sTemp = sEingabe[6];
    sum = sum + sTemp.ToInt()*3;

    sTemp = sEingabe[7];
    sum = sum + sTemp.ToInt()*1;

    sTemp = sEingabe[8];
    sum = sum + sTemp.ToInt()*3;

    sTemp = sEingabe[9];
    sum = sum + sTemp.ToInt()*1;

    sTemp = sEingabe[10];
    sum = sum + sTemp.ToInt()*3;

    sTemp = sEingabe[11];
    sum = sum + sTemp.ToInt()*1;

    sTemp = sEingabe[12];
    sum = sum + sTemp.ToInt()*3;

    sum = sum%10;
    sum = 10-sum;

    Also dies hier ist der Programmausschnitt. Die erste der 12 Ziffern wird mit 1 multipliziert, die 2te mit 3, die 3te wieder mit 1 und so weiter.



  • Hallo

    AnsiString sEingabe = Edit1->Text; 
    int sum = 0;
    bool mal3 = false;
    for (int lv = 1; lv <= sEingabe.Length(); lv++)
    {
      sum += (sEingabe[lv] - '0') * ((mal3) ? 3 : 1);
      mal3 = !mal3; 
    }
    

    Da ist natürlich keine Überprüfung ob in sEingabe auch wirklich nur Ziffern sind.

    Und sfds

    bis bald
    akari



  • Danke für deine schnelle Hilfe. Hab nur noch ein Problem. Ich versteh nich ganz was du in diesen beide Zeile machst:

    sum += (sEingabe[lv] - '0') * ((mal3) ? 3 : 1);
    mal3 = !mal3;



  • HE!!! ICH BIN DEIN GEWISSEN!

    Wie wäre es wenn du es selber versuchst!

    ((mal3) ? 3 : 1) ist nix anderes als eine if-abfrage

    (sEingabe[lv] - '0') damit du den ASCII Wert der Zahl bekommst!

    so... und der Rest wird selber gemacht!!!

    @akari CheckerHacker ist unser Azubi der die Aufgabe alleine lösen soll! Trotzdem Danke für die Hilfe 😉



  • 😕

    wollt eigentlich nur ne Denkhilfe, konnte net wissen, dass da gleich so n krass vormuliertes Ding raus kommt



  • Hallo

    Las es dir am besten von deinem Ausbilder erklären. Schließlich soll er euch ja nicht nur Aufgaben stellen sondern auch was beibringen. Das was ich geschrieben habe sollte mit den Grundlagen von C++ klar sein.

    bis bald
    akari



  • Jop ich hab mein Ausbilder eben gefragt, er steht jetzt grad noch hinter mir 🙂

    Aber war trotzdem ne lustige Aktion

    cya


Anmelden zum Antworten