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 38

    Das 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 1

    So 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 🙂



  • Und bedenke das hier:

    http://de.wikipedia.org/wiki/Einrückungsstil

    Damit dein Code auch lesbar ist.


Log in to reply