for-Schleife jedes Mal ein Leerzeichen mehr



  • Hallo

    Wie realisiere ich dieses in C:

    ->1.0<-
    ->_1.0<-
    ->__1.0<-
    ->___1.0<-
    der Unterstrich _ soll dabei jeweils ein Leerzeichen bedeuten.. Also:
    erst kein Leerzeichen, dann 1 Leerzeichen, dann 2 Leerzeichen.. usw.

    Sprich also immer ein Leerzeichen mehr nach -> z.B. 10 mal

    int i,j;
    for (i=0;i<10;i++)
        printf("->");
     //aber dann???
    

    Es wäre nett, wenn ich einen kleinen Tipp bekommen könnte!

    Grüße
    ZB



  • z.b. mit: for (j=0; j<i; j++)
    🙂



  • hab das jetzt mal umgestellt aber irgendwie hab ein einen Denkfehler... 😞

    hier der Code:

    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
      int i,j;
      for (i=0; i<=10;i++){
          printf("->\n");
          for (j=0; j<i;j++)
              printf(" 1.0<-\n");
              }
      system("PAUSE");	
      return 0;
    }
    

    Die Ausgabe ist jetzt so..
    ->
    1.0<-
    ->
    1.0<-
    1.0<-
    ->
    1.0<-
    1.0<-
    1.0<-
    .
    .
    .
    usw.

    ich will die aber so haben

    ->1.0<-
    ->_1.0<-
    ->__1.0<-

    Wo ist mein Denkfehler?



  • Beim 1. printf(): brauchst du da einen Zeilenvorschub?
    Dann willst du ja immer ein Leerzeichen mehr, von Zeile zur Zeile:
    also for ( ... )printf( Leerz. )
    Dann printf ( letzter Teil deiner Zeile )

    Das mit dem Leerzeichen geht auch ohne "innere for" schau dir die printf - Formate an.

    MfG f.-th.



  • mh kannst du mir das wohl mittes quellcode erklären, werde aus deiner Antwort nicht ganz schlau? Weil wenn ich doch nur eine Schleife habe, dann wird diese doch 10 mal durchlaufen und dann bekomme ich das irgendwie nicht mit dem versetzten hin?



  • Man kann bei printf angeben, wieviel Zeichen mindestens ausgegeben werden sollen. Z.B. wird bei

    printf("%5d\n", 42);
    

    die Zahl 42 ausgegeben, allerdings sagt die 5 zwischen dem '%' und dem 'd', dass mindestens 5 Zeichen ausgegeben werden (Feldbreite). Da für 42 nur 2 nötig sind, werden vorher noch drei Leerzeichen eingefügt.

    Statt der Zahl für die Feldbreite kann man spaßigerweise auch ein '*' hinschreiben, dann wird die Breite hinten als Argument erwartet, also etwa so:

    printf("%*d\n", 5, 42);
    

    Dein Programm könnte also so gehen:

    #include <stdio.h>
    
    int main(void)
    {
      int i;
      for (i=0; i<=10;i++)
          printf("->%*s1.0<-\n", i, "");
      return 0;
    }
    

    Da steht jetzt ein %s im Format-String, also wird ein String ausgegeben. Der String, der eingesetzt wird, ist aber nur "", also nichts; das wird aber durch die Feldbreite auf i Leerzeichen aufgebläht, also in jeder Zeile eins mehr.



  • sauber danke schön! 🙂



  • Hier eine kleine Abwandlung:

    #include <stdio.h>
    
    int main()
    {
    	int i;
    	float u = 1.0;
    
    	printf ( "a little bit tricky: \n");
    	for ( i=5; i<15; i++)
    		printf ("-> %*.1f <-\n", i, u);
    }
    

    Wenn du das jemanden erklären willst/musst, schau es dir gründlich an 😃

    MfG f.-th.


Log in to reply