Präsenztestataufgabe zur Übersetzung mathematischer Terme mit Funktionen in C++-Ausdrücke im Rahmen der Lehre der Programmiersprache C++. (), Testat, Seite 721577
http://www.purl.org/stefan_ram/pub/testat_c++_funktionsterme_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Präsenztestat C++ -Funktionsterme

Zu einem vom Dozenten auf einem Zettel vorgelegten mathematischen Term mit Funktionen (Wurzeln, Potenzen, trigonometrischen Funktionen) ist ein entsprechender C++ -Ausdruck zu schreiben.

Zahlen, die sich auf dem Zettel ganz links oben und ganz rechts oben befinden, sind Ordnungsmerkmale und können ignoriert werden.

Bei der Übersetzung sollen keine Terme im Kopf oder anders ausgerechnet werden. Es soll zu jedem Numeral eines Terms möglichst ein entsprechendes C++ -Numeral geben und zu jeder Funktion und zu jedem Operator des Terms möglichst eine entsprechende C++ -Funktion oder einen entsprechenden C++ -Operator. Manchmal müssen bei der Übersetzung Operatoren oder Klammern hinzugefügt oder bestimmte Konstanten oder Funktionen durch andere ersetzt werden.

Der Wert des C++ -Terms darf sich vom Wert des mathematischen Terms um nicht mehr als ein Milliardstel unterscheiden.

Folgende mathematische Funktionen und Operationen können vorkommen:

Anleitungen zur Übersetzung dieser mathematischen Operationen in C++ -Ausdrücke werden vor der Bearbeitung der Aufgabe gegeben, auch alle Fragen dazu werden vor  Beginn der Bearbeitung beantwortet.

Der Dozent zeigt vor Beginn des Testats anhand des Beispiels, wie ein mathematischer Term in einen Ausdruck umgewandelt werden kann, indem dieser hierarchisch „von oben nach unten“ oder „von unten nach oben“ übertragen wird.

Beispiel [Term]
        ---------------- 
-- / ln sin² 24 
\ / ------------  
\/ cos 2

Beispiel [C++-Ausdruck]
sqrt 
( log( sin( 24. )* sin( 24. )) 

cos( 2. ) 
)

Beispiel [C++-Ausdruck]
sqrt 
( log( pow( sin( 24. ), 2. )) 

cos( 2. ) 
)

Beispiel [C++-Ausdruck]
sqrt( log( pow( sin( 24. ), 2. ))/ cos( 2. ))

Beachten Sie, daß der C++ -Ausdruck durch die Aufteilung auf mehrere Zeilen, die Einrückung und die Imitation der Bruchschreibweise durch Untereinanderschreibung von Zähler und Nenner übersichtlicher ist, als die Variante, bei der alles in eine Zeile geschrieben wurde. Solch eine übersichtliche Formatierung wird aber nicht verlangt.

Die Verwendung von unnötigen Klammerpaaren sollte vermieden werden, weil sie einen Ausdruck unübersichtlicher machen.

Zur Vereinfachung der Bearbeitung ist es bei dieser Aufgabe gestattet, die Angabe des Namensraums "::std::" wegzulassen. Das folgende Beispiel zeigt eine Schreibweise mit Angabe des Namensraums "::std::".

Beispiel [C++-Ausdruck]
::std::sqrt( ::std::log( ::std::pow( ::std::sin( 24. ), 2. ))/ ::std::cos( 2. ))

Beispiel 1 [Term]
cos 2   ------------------- 
-- / sin 2º 
\ / -----------------  
\/ ld arcsin 0,9

Der Wert des Terms von Beispiel 1 liegt bei ca. 40,7176.

Beispiel 2 [Term]
    |  ( 24 mod 5 )/ 3   | 
'- -' 
e

−15 P Für kleinere Flüchtigkeitsfehler bei der Umsetzung des Ausdrucks (Vergessen des Zeichens ".").

−15 P Falls für die Kreiszahl π nicht der oben angegebene Ausdruck sondern ein Numeral verwendet wurde.

−20 P Falls vor dem Bezeichner "main" nicht der Datentyp "int" steht.

−30 P Für Fehler bei der Umsetzung des Ausdrucks.

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz