Sinus/Cosinus Plotten



  • Hallo,

    ich sitze gerade an einer Aufgabe in der ich die Sinus und Cosinusfunktion plotten soll. Dies soll gleichzeitig geschehen und die Schnittpunkte der Graphen sollen mit einem anderen Zeichen ("*") markiert werden.

    Bisher habe ich folgenden Code:

    #include <stdio.h>
    #include <math.h>
    
    cross (double sin) {
    	for(;sin>0;--sin) putchar (' ');
    		printf ("x\n");
    }
    
    plus (double cos){
    	for(;cos>0;--cos) putchar (' ');
    		printf("+\n");
    }
    
    main () {
    	double x;
    
        for(x=-180.0;x<=180.0;x+=15.0)
       {
          cross(10+10*sin(x/180.0*M_PI));
          plus(10+10*cos(x/180.0*M_PI));
    
    }
    }
    

    bzw.

    #include <stdio.h>
    #include <math.h>
    
    star(int indent, char chr){
    for(;indent;--indent) putchar(' ');
    printf ("%c\n", chr );
    }
    
    main () {
    	double x;
        for(x=-180.0;x<=180.0;x+=15.0)
       {
          star(10+10*sin(x/180.0*M_PI),'x');
          star(10+10*cos(x/180.0*M_PI),'+');	
    }
    }
    

    Nur sieht das ganze
    1. nicht aus wie auf meinem Beispielbild, die Zeichen der Cosinusfunktion sehen um eine Stelle versetzt aus.
    2. Kriege ich es nicht hin, das die Schnittpunkte sich als Sternchen anzeigen lassen.

    Ich danke schon mal für jeden Ratschlag.


  • Mod

    Deine beiden Zeichenfunktionen kommen sich in die Quere, falls dir das bisher nicht klar war. Mögliche Abhilfen:

    1. Schwieriger, aber beeindruckt den Lehrer: Sich Gedanken machen, wie diese Interferenz zu vermeiden ist. Du müsstest im Voraus berechnen, welche Zeichen in welcher Reihenfolge in einer Zeile stehen. Dafür müsste man Mathematik® anwenden.

    2. Du "zeichnest" einfach alles in ein 2D-Array und gibst hinterher das Array aus. Da du in dem Array frei hin und her springen kannst, ist Positionierung der Zeichen kein Problem.

    3. Mischform aus 1 und 2, bei der du im Voraus das komplette Aussehen einer Zeile berechnest und diese dann komplett ausgibst.

    Ich würde zu 2. oder 3. raten.


Anmelden zum Antworten