1x1 in einer Tabelle



  • Hi!
    Ich habe folgende Aufgbae bekommen und wollte fragen, ob mir mal jemand einen Tipp geben kann.

    Meine Aufgabe:

    Ich soll diese Tabelle erstellen:

    Tabelle

    Und dann kamen folgende bedingungen dazu:

    1. Rufen Sie im Hauptprogramm nur eine Funktion "tabelle" auf.
    2. In der Funktion "tabelle" soll die Tabelle gezeichnet werden und die einzelnen Ergebnisse und Zahlen der Kopfzeile eingetragen werden.
    3. Das eigentliche Rechnen übernimmt eine weitere Funktion namens "mul(i,k)", die ein Ergebnis des Typs "int" zurück gibt. i und k sind auch vom Typ int.

    Ich soll zwei verschachtelte for-schelifen benutzen!

    mein Ansatz sieht so aus:

    #include <stdio.h>
    
    void tabelle(int);
    void mul(int, int);
    int i=0;
    int k=0;
    int erg=0;
    
    int kl=0;
    
    void main(void)
    {
    
    	tabelle(0);
    
    	scanf("%d",&kl);
    
    }
    
    void tabelle(int)
    {
    	printf("Multiplikationstabelle: Start\n");
    	for(int i=1; i<=10; i++)
    		{
    			for(int k=1; k<=10; k++)
    				{
    					mul(i,k);
    					printf("%d und %d sind %d\n",i,k,erg);
    				}
    		}	
    	printf("Multiplikationstabelle: Ende");
    }
    
    void mul(int,int)
    {
    
    	erg = (i*k);
    
    }
    

    Aber irgendwie wird kein Wert an Tabelle zurückgegeben und was noch viel schlimmer ist, ich weiß nicht, wie ich die Tabelle zeichnen lassen soll.

    Kann mir jemand helfen oder nen Tipp geben?

    Gruß Sheddy



  • probier mal so:

    #include <stdio.h>
    
    int mul (int i, int k)
    {
        return i*k;
    }
    
    void tabelle (void)
    {
        int i;
        int k;
    
        printf("Multiplikationstabelle: Start\n");
        for (i=1; i<=10; i++)
          for (k=1; k<=10; k++)
            printf("%d mal %d sind %d\n",i,k, mul (i,k));
        printf("Multiplikationstabelle: Ende");
    }
    
    void main(void)
    {
        tabelle();
        while(1);
    }
    


  • okay, es funktioniert.

    Ich habe mal ne Frage:

    Wieso ging das nicht nach meienr Art in der "mul"-Funktion?

    Also, dass ich eine extra Variable erzeuge und diese zurück an die Funktion "tabelle" zurück gebe?



  • sheddy schrieb:

    Wieso ging das nicht nach meienr Art in der "mul"-Funktion?

    das geht auch aber deine 'mul' hat syntax errors. so könnte sie aussehen

    void mul (void)
    {
       erg = i*k;
    }
    

    aber dagegen spricht ja die aufgabenstellung:
    3. Das eigentliche Rechnen übernimmt eine weitere Funktion namens "mul(i,k)", die ein Ergebnis des Typs "int" zurück gibt. i und k sind auch vom Typ int.



  • Das Problem deiner mult()-Funktion ist, daß sie auf den globalen Variablen rechnet, während du für deine Schleifen eigene lokale Variablen angelegt hast (i und i haben zwar den selben Namen und Typ, aber ansonsten nichts miteinander zu tun - Stichwort: Überdeckung).

    Und der Rest deiner Aufgabe besteht dann darin, die Ausgaben in der Schleife geeignet zu formatieren - erst alle k-Werte und dann in jeder Schleife den i-Wert und die einzelnen Produkte.


Anmelden zum Antworten