EinmalEins C Programm X und Y Achse verdrehen



  • Hallo,

    als Übung soll ich eine Funktion schreiben die das Einmaleins auf der Konsole ausgibt. Leider ist meine Lösung nicht ganz richtig.
    Vielleicht kann mir jemand helfen.
    Es soll folgend aussehen:
    10 11 12 13 ...
    20 22 24 25 ...
    30 33 36 39 ...

    Meine Lösung:
    10 20 30 40 ...
    11 22 33 44 ...
    12 24 36 48 ...

    #include <stdio.h>
    
    void einmaleins(int von, int bis) {
    
        int i;
    
        for(von; von <= bis; von++) {
                for(i = 1; i <= 10; i++) {
                    printf("%3d ", von*i);
                }
                printf("\n");
        }
    }
    
    int main() {
    
        einmaleins(10, 20);
    
        return 0;
    }
    


  • Hab's mir anders überlegt. Will doch keinen Streit.



  • was genau meinst du mit "Karnickelzüchter"? 😕



  • Der geneigte Leser mag erkennen, dass deine Ergebnismatrix offenbar transponiert ist. Ob da wohl das Vertauschen der Schleifen was bringt? 🙄



  • habe ich schon versucht. hat nichts gebracht.



  • hansi557 schrieb:

    habe ich schon versucht. hat nichts gebracht.

    Dann hast du es wohl falsch gemacht.
    Da du deinen Versuch aber nicht zeigst, müssten wir raten, was falsch ist.



  • hansi557 hat wahrscheinlich einfach nur die Schleifen vertauscht:

    for(i = 1; i <= 10; i++) {
        for(von; von <= bis; von++) {
                    printf("%3d ", von*i);
                }
                printf("\n");
        }
    

    Und das ergibt natürlich nicht die richtigen Werte, denn der Schleifenzähler von wird ja dann nicht wieder zurückgesetzt.

    Tipp: Verwende in der inneren Schleife eine eigene Variable, z.B. j.



  • Th69 schrieb:

    ...

    Das ist auch meine Vermutung und ich hatte das sogar schon halb im Post drin.

    Ich wollte dann aber erstmal auf eine Reaktion von Hansi warten.



  • Danke für die Antworten.
    Wie soll ich den j in der inneren for-schleife verwenden. Ich kann doch die Variablen nicht ersetzen.



  • hansi557 schrieb:

    Danke für die Antworten.
    Wie soll ich den j in der inneren for-schleife verwenden. Ich kann doch die Variablen nicht ersetzen.

    Bei der i-Schleife zählst du von 1 bis 10
    Bei der j-Schleife sollst du von von bis bis zählen.
    (oder lass sie am Anfang von fest von 10 bis 20 laufen)
    Du musst dir dann noch überlegen, wo das j dein von (bisherige Laufvariable) ersetzen muss



  • die innere for schleife zählt doch von "von" bis "bis".



  • ja aber du veränderst "von" und läuft die schleife beim 2. durchgang anders ab



  • ok habe die Lösung. 👍


Log in to reply