Tabelle ist verrutscht



  • Hallo!

    Dies ist mein Programm, in dem eine Tabelle erzeugt wird. Jedoch verrutschen die Zahlen in der Tabelle.

    Kann mir jemand sagen, wie ich die Zahlen "vernünftig" ausgebe?!

    #include <stdafx.h>
    #include <stdio.h>
    
    int i=0;
    int k=0;
    
    void tabelle(void);
    int mul(int, int);
    
    int kl=0;
    
    void main(void)
    {
    
    	tabelle();
    	scanf("%d",&kl);
    
    }
    
    void tabelle(void)
    {
    
    	printf("\n\t|\n\t| 1  2  3  4  5  6  7  8  9  10\n------------------------------------------------\n");
    
    	for(i=1; i<=10; i++)
    		{
    
    			printf("  %d\t|",i);
    			for(k=1; k<=10; k++)
    				{
    					printf(" %d ",mul(i,k));
    				}
    
    			printf("\n");
    		}	
    
    }
    
    int mul(int i,int k)
    {
    	return(i*k);
    
    }
    

    Gruß Sheddy



  • Gibt noch was zu basteln für Dich, aber Du wirst es schaffen.

    printf(" %2d ",mul(i,k));     //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    

    🙂



  • kannst du mir sagen, wie man das nennt?!

    Und wie ich das benutzen muss?! also, was es genau macht?!

    sheddy



  • Die Zeile wo

    printf(" %d ",mul(i,k));
    

    stand wird durch diese Zeile ersetzt

    printf(" %2d ",mul(i,k));
    

    Neu ist die 2, sie gibt die maximale Feldbreite an, dadurch kannst Du die Tabelle ordendlich darstellen.
    🙂



  • ja, okay, das habe ich ja verstanden.

    Ich frage mich bloß, wieso das funktioniert.

    Also die Zahlen über der 100 werden bei %3d bis auf die letzte Ziffer verschoben, dass das gut aussieht.

    Aber warum wird die letzte Zeile mit 10, 20, ... ,100 nicht verschoben?!

    Das ist mir nicht klar..



  • Du sagst printf() mit der Angabe %3d, daß du 3 Zeichen für die Zahl haben möchtest - wenn sie kürzer ist, wird sie automatisch mit Leerzeichen aufgefüllt.
    (btw, wenn die Zahl größer wird als angegeben, verschiebt sich die Tabelle trotzdem)


Anmelden zum Antworten