Schachbrett
-
Hallo Ihr!
Ich stehe vor einem Problem: Ich soll mit Hilfe von Schleifen ein schachbrettartiges Muster erzeugen, mit 8x8 Feldern. Die Felder sollen dann mit den Zahlen von 1-64 aufgefüllt werden.
Mein Problem ist: Ich krieg das ganze einfach nicht in eine geordnete Form.
Das ganze sieht immer so aus:12345678
910111213141516Was kann ich tun?
Danke!
-
damit bekommst du schon mal die richtige ausrichtung hin
printf("%3d", zahl);int i; for(i = 1; i <= 64; ++i) { printf("%3d", i); if (i % 8 == 0) printf("\n"); }
soweit nachvollziehbar?
die 3 im formatstring gibt an, dass alles auf 3 zeichen gefüllt wird. also eine "9" wird auf " 9" aufgefüllt (edit: das sollen eigentlich zwei leerzeichen in der "__9" sein).
das (i % 8 == 0) sorgt dafür, dass bei i = 8,16,24,... immer ein \n umbruch kommt.
-
Erstmal 1000 Dank für die schnelle Hilfe!
Ich versteh bloß noch nicht ganz, wie (i % 8 == 0) den Umbruch macht, aber naja.
Danke nochmals!
-
i % 8 bedeutet teilen mit rest.
10 % 8 = 2
16 % 8 = 0immer wenn (i % 8 == 0) dann ist i ein vielfaches von 8
umbruch kommt durchs printf("\n"), das bei der bedingung ausgeführt wird.
-
ah, jetzt check ichs! Danke für die Nachhilfe
-
toll, das eine Problem gelöst, hab ich noch ein neues parat:
nun soll das ganze folgendermaßen aussehen:
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
...
-
void schachbrett (void) { int s = 4; while (s--) puts ("01010101\n10101010"); }
-
int i; for(i = 1; i <= 64; ++i) { printf("%3d", i % 2); if (i % 8 == 0) printf("\n"); }
neu ist das i % 2, es wechselt zwischen null und eins hin und her.
-
...von Abkürzer ist besser.
-
abkürzer ist wohl n kleiner scherzbold
-
hm, is modulo, das versteh ich, aber wie das zwischen 0 und 1 wechselt, check ich nicht
-
Jasper schrieb:
hm, is modulo, das versteh ich, aber wie das zwischen 0 und 1 wechselt, check ich nicht
i%2 ist gleich 0 bei geraden und gleich 1 bei ungeraden zahlen. wenn i alle zahlen durchläuft, dann ist i abwechselnd mal eine gerade und mal eine ungerade zahl. und deshalb ist i%2 abwechselnd mal 0 und mal 1.
-
aaah, danke für die erleuchtung
-
ah, wo ichs mir grad mal genauer anschaue: das ist nicht die lösung zu der problemstellung! die reihenfolge soll sich jede zeile umkehren.
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
-
hm stimmt. dann mach es so:
aus (i % 2)
wird ((i+i/8) % 2)
i/8 ist quasi die zeilennummer (fängt bei null an)
-
hm, ich versuchs ma zu verstehen. dauert bei mir immmer etwas
-
ok, ich checks immer noch nicht wirklich
-
Muß das unbedingt berechnet werden? Eine coole Lösung steht doch schon hier.
-
hm...
das ganze hat aber immer noch einen Haken:
-das Programm startet mit einer 1, nicht mit einer 0
- die letzten beiden Zahlen einer Reihe sind gleich, was z.b bei 8/8+8 % 2 in der ersten Zeile ja nachvollziehbar ist.
-
na dann probier mal, ob du es hinkriegst.
dein dozent erwartet das schließlich von dir und dein studium soll ja nicht nur zeitverschwendung sein.