Ich bitte Si um hillfe bitte bitte ....



  • Darstellung von Funktionen mit dem GrafServer

    In dieser Aufgabe sollen beliebige Ausschnitte eines Funktionsgraphen mit Hilfe des
    GrafServers dargestellt werden. Dabei wird die Funktionskurve durch einen Polygonzug
    oder durch gerade Linien approximiert (s. Abb. am Ende).
    Wählen Sie eine beliebige mathematische Funktion f(x) einer reellen Variablen, die Sie als
    C++-Funktion programmieren:
    · double f (double x)
    Die Funktion sollte nicht zu einfach sein und einen interessanten Graphen besitzen (also
    z. B. nicht f(x) = x).
    Schreiben Sie eine Funktion plotFunction (), welche einen bestimmten Ausschnitt der
    Funktion f(x) zeichnet:
    · void plotFunction (double xa, double xb, double step,
    double ya, double yb,
    int xag, int xbg, int yag, int ybg)
    Die Parameter der Funktion haben folgende Bedeutung: xa und xb geben das Intervall an,
    in dem die Funktion f(x) gezeichnet werden soll. Die Funktion f(x) soll mit einer Schrittweite
    step ausgewertet werden. ya und yb geben den Bereich in y-Richtung an, in dem die
    Funktionswerte erwartet werden. Der durch xa, xb, ya und yb gegebene rechteckige
    Bereich wird im Grafik-Display auf ein Rechteck mit den Koordinaten xag und xbg (linker
    und rechter Rand) sowie yag und ybg (unterer und oberer Rand) abgebildet. Der Rand
    dieses Rechtecks soll ebenfalls gezeichnet werden. Außerdem sollen die Werte xa, xb, ya
    und yb in das Funktionsdiagramm eingezeichnet werden.
    Hinweise zur Funktion plotFunction():
    1. Zur Umrechnung von Funktionskoordinaten (x, y, reell) in Grafik-Koordinaten (xg, yg,
    ganzzahlig) kann man wie folgt vorgehen: Berechnen Sie zunächst die
    Skalierungsfaktoren
    double sx = (xbg - xag) / (xb - xa);
    double sy = (ybg - yag) / (yb - ya);
    Mit diesen Werten können xg und yg aus x und y berechnet werden:
    xg = (int) (sx * (x - xa) + xag);
    yg = (int) (sy * (y - ya) + yag);
    2. Zum Zeichnen des Polygonzugs mit Hilfe der GrafServer-Funktion
    drawPolyline() müssen die x- und die y-Koordinaten jeweils in ein ein int-Array
    geschrieben werden. Da die Anzahl der Punkte vom Funktionsparameter step
    abhängt, sollten die Arrays dynamisch angelegt werden.
    3. Um die Koordinatenwerte xa, xb, ya und yb in das Diagramm zu zeichnen, müssen
    die Zahlenwerte zunächst in Zeichenketten umgewandelt werden. Dies geschieht am
    besten mit folgendem Aufruf der Funktion sprintf():
    sprintf (text, "%.1f", x);
    Dabei ist text das char-Array, in das die Zahl ausgegeben werde soll, "%.1f" ist
    ein sogenannter Format-String, der in diesem Fall angibt, dass der nächste
    Parameter (also x) mit einer Nachkommastelle ausgegeben werden soll.Lesen Sie im Hauptprogramm in einer Schleife (j/n-Abfrage am Ende zur Wiederholung)
    die zur Darstellung der Funktion notwendigen Parameter xa, xb, step, ya und yb ein. Die
    Werte von xag, xbg, yag und ybg können entweder ebenfalls eingelesen oder fest ins
    Programm eingebaut werden.
    Erweiterungen für Interessierte (nicht bewertet):
    · Falls die Funktionskoordinaten x=0 oder y=0 im ausgegebenen Rechteck liegen,
    können auch die entsprechenden Nulllinien (= Koordinatenachsen) eingezeichnet
    werden.
    · Um die Funktion plotFunction() flexibler zu machen, sollte sie nicht von einer
    speziellen Funktion f() abhängen. Es wäre schön, wenn man die Funktion f() als
    Parameter an die Funktion plotFunction() übergeben könnte. Dies geht in der Tat.
    Man kann dazu einen Pointer auf eine Funktion verwenden. Der Datentyp eines
    solchen Pointers hängt von den Funktionsparametern und dem Rückgabetyp ab. Einen
    Pointer auf eine Funktion mit einem double-Parameter und Rückgabetyp double
    definiert man wie folgt:
    double (*func)(double);
    func ist hier der Name des Pointers. In diesem kann man direkt die Adresse einer
    Funktion abspeichern (kein Adressoperator notwendig):
    func = f;
    Dabei ist f eine Funktion vom Typ double f (double x). Man kann nun die
    Funktion f mit Hilfe des Pointers func aufrufen (kein Inhaltsoperator notwendig):
    y = func (x);
    Man kann der Funktion plotFunction() als zusätzlichen Parameter einen solchen
    Funktionspointer geben und hat dadurch die Möglichkeit, eine beliebige Funktion zu zeichen



  • Und wo brauchst du Hilfe?


  • Mod

    Bitte nicht zweimal dir gleiche Frage in verschiedenen Unterforen stellen, sondern stattdessen das richtige Forum wählen! Da du im anderen Thread schon Antworten bekommen hast (auch wenn diese so hilfreich sind wie die Fragestellung es provoziert), verlinke ich mal:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-264740-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html



  • Boah und dann bitte das hier sorgfältig durchlesen.

    http://www.tty1.net/smart-questions_de.html#asking



  • Hey ,
    dein Lehrer hat dir doch eigentlich alles vorgekaut, da muss man nicht viel selber nachdenken. Was erwartest du eigentlich , dass wir hier dir den komplett fertigen Lösungsweg zeigen? Ein bisschen Eigeninitiative könnte man ruhig an den Tag legen, wenn man dann irgendwo nicht weiter kommt wird einen dann auch bestimmt einer helfen. Aber so ....das ist echt arm sorry!
    Falls du selber aber dennoch mal noch was machen willst 😉
    kannst du dir diesen Source von den Plotter angucken, das hilft dir bestimmt weiter und bringt dich auf ein paar gute Ideen.
    http://www.codeproject.com/KB/miscctrl/ExpressionPlotterControl.aspx
    So dann viel Glück und ich wünsche dir dass dein Lehrer krank wird 😉


Anmelden zum Antworten