Ausgabe in C
-
Hallo miteinander,
Ich bin ein relativer C Neuling und will jetzt in einem Programm eine Darstellung haben die c.a. so aussieht:
10 12 14 16 18
20 22 24 26 28
30 32 34 36 38Das ganze habe ich mir in einer for schleife mal überlegt aber irgendwie komme ich nicht über die erste zeile hinaus... mein aktueller code :
for (x=10; x=20 ;x){ for (x=10;x<20;x=x+2){ printf("%d ",x); } printf("\n"); }
Das würde die erste Zeile ausgeben jedoch momentan noch in einer endlos schleife
Bin für jede Hilfe echt dankbar
-
Badenser28 schrieb:
for (x=10; x=20 ;x){
Eine for-Schleife mit diesem Kopf ist leider ziemlicher Quatsch . Du sagst hier:
- setze x auf 10
- mache weiter, solange der Ausdruck "setze x auf 20" wahr ist (der ist immer wahr) (*)
- in jedem Durchlauf führe den Ausdruck "x" aus.(*) hierzu musst du wissen, dass "=" der Zuweisungsoperator ist und "==" ein Vergleichsoperator! "x=1" (Zuweisung, x wird auf 1 gesetzt) ist also was ganz anderes als "x==1" (Vergleich, ist x gleich 1?).
Was eher Sinn machen würde, wäre Folgendes:
for (x=0; x<10 ;x++){
Das bedeutet:
- setze x auf 0
- mache weiter, solange x kleiner 10 ist
- in jeden Durchlauf erhöhe x um 1So würde die Schleife 10 mal durchgeführt werden.
Ich hoffe, es ist jetzt klarer, wie eine for-Schleife funktioniert. Nun kannst du dir Gedanken machen, wie dein Vorhaben umzusetzen ist. Bei weiteren Schwierigkeiten frag einfach.
EDIT: Übrigens ist es normalerweise fatal, bei 2 verschachtelten for-Schleifen in beiden Fällen die gleiche Variable (bei dir x) zu benutzen. Jede Schleife beeinflusst dann dasselbe x, so dass du höchstwahrscheinlich nicht das gewünschte Verhalten erhältst.
-
Badenser28 schrieb:
Hallo miteinander,
Ich bin ein relativer C Neuling und will jetzt in einem Programm eine Darstellung haben die c.a. so aussieht:
10 12 14 16 18
20 22 24 26 28
30 32 34 36 38
Das ganze habe ich mir in einer for schleife mal überlegt...schleifen brauchste doch nicht dafür, mach einfach so:
puts ("10 12 14 16 18\n20 22 24 26 28\n30 32 34 36 38");
-
Klar, fricky! Wer braucht schon Kontrollstrukturen, wenn er genau weiß was er sehen will und puts hat, ne?
-
Hmm ok stimmt danke erstmal.
hab den kopf jetzt in
for (x=10; x<100 ;x+2){
verändert .
Also das es von 10 bis "99" läuft und sich immer um 2 erhöht. Also 10 12 etc..So nun wie kann ich in C aber jetzt mit der nächste for schleife sagen , dass er sobald x>=20 z.B. einen Zeilenumbrauch machen soll. Mit if könnte ich mir es gut vorstellen aber mit ner for schleife jetzt weniger.
for(x=10;x!=20;x)?
-
Badenser28 schrieb:
hab den kopf jetzt in
for (x=10; x<100 ;x+2){
verändert .
Also das es von 10 bis "99" läuft und sich immer um 2 erhöht. Also 10 12 etc..
Das passiert aber nicht. Du hast es nicht ausprobiert, oder?
Du musst verstehen wie Zuweisungen in C funktionieren. Du kannst x nicht erhöhen, indem du "x+2" schreibst. Damit notierst du einen Ausdruck, dessen Ergebnis quasi verpufft, weil es nicht zugewiesen wird. Richtig wäre:
x=x+2; //x wird das Ergebnis von x+2 zugewiesen, x wird also immer um 2 erhöht //oder: x+=2; //abgekürzte Schreibweise, bedeutet das gleiche
Badenser28 schrieb:
So nun wie kann ich in C aber jetzt mit der nächste for schleife sagen , dass er sobald x>=20 z.B. einen Zeilenumbrauch machen soll. Mit if könnte ich mir es gut vorstellen aber mit ner for schleife jetzt weniger.
for(x=10;x!=20;x)?
Nee, die Schleife wäre wieder Quatsch...
Du willst alle 20 mal einen Zeilenumbruch, richtig? Sowas kann man prima mit dem Modulo-Operator ("%") machen. Der gibt dir den Rest eine Ganzzahlendivision. Probier mal sowas:
if(x % 20 == 0) { //wenn x durch 20 = irgendwas Rest 0 (also alle 20 mal)... //...Zeilenumbruch drucken }
-
_matze schrieb:
Klar, fricky! Wer braucht schon Kontrollstrukturen, wenn er genau weiß was er sehen will und puts hat, ne?
klar, mit schleifen ist's doch viel zuviel code:
int j,k; for (j=1; j<=3; j++) { for (k=0; k<=8; k+=2) { printf ("%d%d ", j,k); } puts(""); }
-
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <stdio.h> int main() { int x,i,y; for (x=10; x<100 ;x+=2){ if(x%10==0) printf("\n"); printf("%d ",x); } system("PAUSE"); return(0); }
So klappts wunederbar vielen danke für die Hilfe
-