Zahlen ausgeben



  • Hallo!

    Ich habe ein kleines Problem, ich steh nämlich total auf dem Schlauch! 😃

    Ich soll eine Ausgabe in ein Memo-Feld machen, und zwar soll am Schluss das dabei rauskommen:

    123456789
    23456789
    3456789
    456789
    56789
    6789
    789
    89
    9

    Hier mal der Code:

    char zahl[10];
         memset(zahl,0,10);
    
         for(int i=1;i<10;i++)
         {
            for(int j=0;j<10;j++)
            {
    
                zahl[j] = j + 0x30;
            }
            Memo1->Lines->Add(zahl);
         }
    

    So, nun frage ich mich, was ich zu tun hab, dass die 1. Zahl (1,2,3, usw.) gar nicht mehr in der Schleife auftaucht?

    Die soll ja nicht erst mitgezählt werden, und dann wegfallen, sondern halt gar nicht erst dazukommen.

    Dann habe ich noch ein Problem (ähnlich zu dem oben), und zwar soll dann die Ausgabe folgende sein:

    123456789
    234567891
    345678912
    456789123
    567891234
    678912345
    789123456
    891234567
    912345678

    Wie wäre denn das zu machen (die Schleife müsste ja so ähnlich sein, oder?)?

    Für Hilfe wäre ich dankbar. 😉 👍



  • Hallo

    AnsiString zahl = "123456789";
    while (zahl.Length() > 0)
    {
      Memo1->Lines->Add(zahl);
      zahl.Delete(1, 1);
    }
    

    bis bald
    akari



  • Hallo!

    Ja, wie es mit AnsiString und Length geht weiß ich, aber es soll mit char gemacht werden, deshalb hab ich es ja schon so geschrieben. 😉



  • dann mach halt

    char bla[11];
    for(...)
    {
    ...
       bla[strlen(bla)-1] = '\0';
    }
    

    greetz KN4CK3R



  • Vielleicht so?

    for(int i=1;i<10;i++)
    {
       char zahl[10] = {0}
       for(int j=i;j<10;j++)
       {
           zahl[j] = j + 0x30;
       }
       Memo1->Lines->Add(zahl);
    }
    


  • Das 2. Problem kannst Du jedenfalls so lösen:

    char zahl[10];
         memset(zahl,0,10);
    
         for(int i=1;i<10;i++)
         {
            for(int j=0;j<9;j++)
            {
              if (j+i<=9)
                zahl[j] = (j+i) + 0x30;
              if (j+i>9)
                zahl[j] = (j+i-9) + 0x30;
            }
            Memo1->Lines->Add(zahl);
         }
    

    Gruß myerscola



  • Braunstein schrieb:

    Vielleicht so?

    for(int i=1;i<10;i++)
    {
       char zahl[10] = {0}
       for(int j=i;j<10;j++)
       {
           zahl[j] = j + 0x30;
       }
       Memo1->Lines->Add(zahl);
    }
    

    Hallo!

    Danke für die Antwort. Ich hab es jetzt so gelöst:

    char zahl[10];
    
         for(int i=1;i<10;i++)
         {
             //memset(zahl,0,10);
             int j;
             for(j=i;j<10;j++)
             {
                zahl[j-i] = j + 0x30;
    
             }
             zahl[j-i] = 0;
             Memo1->Lines->Add(zahl);
         }
    

    myerscola schrieb:

    Das 2. Problem kannst Du jedenfalls so lösen:

    char zahl[10];
         memset(zahl,0,10);
    
         for(int i=1;i<10;i++)
         {
            for(int j=0;j<9;j++)
            {
              if (j+i<=9)
                zahl[j] = (j+i) + 0x30;
              if (j+i>9)
                zahl[j] = (j+i-9) + 0x30;
            }
            Memo1->Lines->Add(zahl);
         }
    

    Gruß myerscola

    @ myerscola:

    vielen Dank dafür, klappt wunderbar. 👍

    Nun soll ich es aber ohne if Abfrage machen, sondern mit Modulo und ner angepassten Schleife. 😃



  • Cybertec schrieb:

    Nun soll ich es aber ohne if Abfrage machen, sondern mit Modulo und ner angepassten Schleife. 😃

    Du bist richtig lustig!
    Sowas schreibt man vorher.



  • Cybertec schrieb:

    Nun soll ich es aber ohne if Abfrage machen, sondern mit Modulo und ner angepassten Schleife. 😃

    Vielleicht solltest du diesen Punkt mal selbst versuchen schließlich sind es deine Hausaufgaben. Wenn du weitere Hilfe brauchst kannst du ja erstmal deine Versuche dazu zeigen.



  • char zahl[10];
       memset(zahl,0,10);
       for(int i=0;i<9;i++)
       {
          for(int j=0;j<9;j++)
          {
             zahl[j] = (j+i)%9 + 0x31;
          }
          Memo1->Lines->Add(zahl);
       }
    

Anmelden zum Antworten