Subato

Resource Files

FunGraph (freiwillige Zusatzaufgabe)

(freiwillige Zusatzaufgabe)
In Java gibt es eine sehr einfache Art, um statische Funktionen zu erzeugen, die sogenanten Lambda-Ausdrücke. So lässt sich die Standardparabelfunktion schreiben als folgender Ausdruck: (x) -> x*x.
So lassen sich Objekte vom Typ Function<Double,Double> erzeugen. Diese haben genau eine Methode, die Methode apply. Diese bekommt einen Double-Wert als Parameter und berechnet den Funktionswert für diesem Parameter.
Spannender als nur immer den Graphen einer bestimmten Funktion zu schreiben, ist es, diese Funktion als Parameter mit einem Lambda-Ausdruck zu erzeugen.
Schreiben Sie jetzt eine Methode:
static String mkStringGraph(Function<Double,Double> f,int xMin,int xMax,int yMin,int yMax).
Sie soll einen String erzeugen, der als Ascii-Graphik den Graphen der übergebenen Funktione $f$ im Definitionsbereich xMin bis xMax anzeigt.

Der Aufruf System.out.println(mkStringGraph(x -> 10*Math.cos(x/10),-50, 50, -10, 10)); soll zum Beispiel zu folgender Ausgabe führen:

                                                 *|*                                                 
                                             *****|*****                                             
                                           ***    |    ***                                           
                                          **      |      **                                          
                                        ***       |       ***                                        
                                       **         |         **                                       
                                      **          |          **                                      
*                                    **           |           **                                    *
**                                  **            |            **                                  **
 **                                **             |             **                                ** 
--***----------------------------***--------------|--------------***----------------------------***--
    **                          **                |                **                          **    
     **                        **                 |                 **                        **     
      **                      **                  |                  **                      **      
       ***                   **                   |                   **                   ***       
         **                ***                    |                    ***                **         
          **              **                      |                      **              **          
           ***           **                       |                       **           ***           
             ***       ***                        |                        ***       ***             
               *********                          |                          *********               
                                                  |                                                  

Es soll also das Koordinatensystem gezeichnet werden und der Verlauf des Graphen mit dem Symbol * stetig angezeigt werden.


import java.util.function.Function; public final class FunGraph { private FunGraph(){} static String mkStringGraph(Function<Double,Double> f ,int xMin,int xMax,int yMin,int yMax){ String result=""; //Hier jetzt zeilenweise den String erzeugen. return result; } public static void main(String[] args) { System.out.println(mkStringGraph((x)->x*x,-2,2,0,4)); System.out.println(mkStringGraph((x)->x*x*x,-4,4,0,16)); System.out.println(mkStringGraph(x -> 10*Math.cos(x/10),-5,5,0,25)); } }
java