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
9Hier 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
912345678Wie 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); }