#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
#include <sstream>
using namespace std;
string centerize(string what, unsigned width)
{
bool front = true;
while(what.size() < width)
{
if (front)
what.insert(what.begin(), ' ');
else
what.push_back(' ');
front = !front;
}
return what;
}
double sinus (double x); //Funktions Prototype
double cosinus (double x); //Funktions Prototype
double hoch (double x); //Funktions Prototype
double durchlauf (double x, double y, double z, int a); //Funktions Prototype
int main () {
int sigziffern;
double schritte, startwert, endwert;
cout << "Bitte Startwert fuer x eingeben: ";
cin >> startwert;
cout << "\n\n";
cout << "Bitte Endwert fuer x eingeben: ";
cin >> endwert;
cout << "\n\n";
cout << "Bitte Schrittweite fuer x eingeben: ";
cin >> schritte;
cout << "\n\n";
cout << "Wieviele signifikante Ziffern sollen angezeigt werden: ";
cin >> sigziffern;
cout << "\n\n";
// Wir können nicht sicher sagen, wie viele Stellen der Exponent bei scientific hat.
// Daher etwas umständlich:
unsigned length;
{
stringstream s;
s << left << showpos << scientific << setprecision(sigziffern) << 1.0;
length = s.str().size();
}
cout << centerize("x", length) <<'|' << centerize("sin(x)", length) << '|'
<< centerize("cos(x)", length) << '|' << centerize("x^2", length) << "|\n";
durchlauf (startwert, endwert, schritte, sigziffern);
return 0;
}
double durchlauf (double x, double y, double z, int a) { // while Schleife fuer den Durchlauf der einzelnen Felder
while (x<y || x==y) {
cout << left << showpos << scientific << setprecision(a) << x << "|"
<< left << showpos << scientific << setprecision(a) << sinus(x) << "|"
<< left << showpos << scientific << setprecision(a) << cosinus(x) << "|"
<< left << showpos << scientific << setprecision(a) << hoch(x) << "|"
<< "\n";
x = x+z;
}
}
double sinus (double x) { //Funktion für Sinus Berechnung
return sin(x);
}
double cosinus (double x) { //Funktion für Cosinus Berechnung
return cos(x);
}
double hoch (double x) { //Funktion für Hoch Berechnung
return x*x;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApzdHJpbmcgY2VudGVyaXplKHN0cmluZyB3aGF0LCB1bnNpZ25lZCB3aWR0aCkKewogICAgYm9vbCBmcm9udCA9IHRydWU7CiAgICB3aGlsZSh3aGF0LnNpemUoKSA8IHdpZHRoKQogICAgewogICAgICAgIGlmIChmcm9udCkKICAgICAgICAgICAgd2hhdC5pbnNlcnQod2hhdC5iZWdpbigpLCAnICcpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgd2hhdC5wdXNoX2JhY2soJyAnKTsKICAgICAgICBmcm9udCA9ICFmcm9udDsKICAgIH0KICAgIHJldHVybiB3aGF0Owp9CiAKZG91YmxlIHNpbnVzIChkb3VibGUgeCk7ICAgICAgICAgICAgICAgICAgIC8vRnVua3Rpb25zIFByb3RvdHlwZQpkb3VibGUgY29zaW51cyAoZG91YmxlIHgpOyAgICAgICAgICAgICAgICAgLy9GdW5rdGlvbnMgUHJvdG90eXBlCmRvdWJsZSBob2NoIChkb3VibGUgeCk7ICAgICAgICAgICAgICAgICAgICAvL0Z1bmt0aW9ucyBQcm90b3R5cGUKZG91YmxlIGR1cmNobGF1ZiAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgaW50IGEpOyAvL0Z1bmt0aW9ucyBQcm90b3R5cGUKIAppbnQgbWFpbiAoKSB7CiAgIAogICAgaW50IHNpZ3ppZmZlcm47CiAgICBkb3VibGUgc2Nocml0dGUsIHN0YXJ0d2VydCwgZW5kd2VydDsKICAgCiAgICAgCiAgICAgY291dCA8PCAiQml0dGUgU3RhcnR3ZXJ0IGZ1ZXIgeCBlaW5nZWJlbjogIjsKICAgICBjaW4gPj4gc3RhcnR3ZXJ0OwogICAgIGNvdXQgPDwgIlxuXG4iOwogICAgIAogICAgIGNvdXQgPDwgIkJpdHRlIEVuZHdlcnQgZnVlciB4IGVpbmdlYmVuOiAiOwogICAgIGNpbiA+PiBlbmR3ZXJ0OwogICAgIGNvdXQgPDwgIlxuXG4iOwogICAgIAogICAgIGNvdXQgPDwgIkJpdHRlIFNjaHJpdHR3ZWl0ZSBmdWVyIHggZWluZ2ViZW46ICI7CiAgICAgY2luID4+IHNjaHJpdHRlOwogICAgIGNvdXQgPDwgIlxuXG4iOwogICAgIAogICAgIGNvdXQgPDwgIldpZXZpZWxlIHNpZ25pZmlrYW50ZSBaaWZmZXJuIHNvbGxlbiBhbmdlemVpZ3Qgd2VyZGVuOiAiOwogICAgIGNpbiA+PiBzaWd6aWZmZXJuOwogICAgIGNvdXQgPDwgIlxuXG4iOwogICAgIAogICAgIC8vIFdpciBrw7ZubmVuIG5pY2h0IHNpY2hlciBzYWdlbiwgd2llIHZpZWxlIFN0ZWxsZW4gZGVyIEV4cG9uZW50IGJlaSBzY2llbnRpZmljIGhhdC4KICAgICAvLyBEYWhlciBldHdhcyB1bXN0w6RuZGxpY2g6CiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIHsKICAgICAgICAgc3RyaW5nc3RyZWFtIHM7CiAgICAgICAgIHMgPDwgbGVmdCA8PCBzaG93cG9zIDw8IHNjaWVudGlmaWMgIDw8IHNldHByZWNpc2lvbihzaWd6aWZmZXJuKSA8PCAxLjA7CiAgICAgICAgIGxlbmd0aCA9IHMuc3RyKCkuc2l6ZSgpOwogICAgIH0KICAgICBjb3V0IDw8IGNlbnRlcml6ZSgieCIsIGxlbmd0aCkgPDwnfCcgPDwgY2VudGVyaXplKCJzaW4oeCkiLCBsZW5ndGgpIDw8ICd8JwogICAgICAgICAgPDwgY2VudGVyaXplKCJjb3MoeCkiLCBsZW5ndGgpIDw8ICd8JyA8PCBjZW50ZXJpemUoInheMiIsIGxlbmd0aCkgPDwgInxcbiI7CiAgICAgCiAgICAgZHVyY2hsYXVmIChzdGFydHdlcnQsIGVuZHdlcnQsIHNjaHJpdHRlLCBzaWd6aWZmZXJuKTsKICAgICAKICAgICByZXR1cm4gMDsKICAgICAgIAp9CiAKIApkb3VibGUgZHVyY2hsYXVmIChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBpbnQgYSkgeyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWxlIFNjaGxlaWZlIGZ1ZXIgZGVuIER1cmNobGF1ZiBkZXIgZWluemVsbmVuIEZlbGRlcgogICAgICAgCiAgICAgICB3aGlsZSAoeDx5IHx8IHg9PXkpIHsKICAgICAgICAgICBjb3V0IDw8IGxlZnQgPDwgc2hvd3BvcyA8PCBzY2llbnRpZmljIDw8IHNldHByZWNpc2lvbihhKSA8PCB4IDw8ICJ8IgogICAgICAgICAgIDw8IGxlZnQgPDwgc2hvd3BvcyA8PCBzY2llbnRpZmljICA8PCBzZXRwcmVjaXNpb24oYSkgPDwgc2ludXMoeCkgPDwgInwiCiAgICAgICAgICAgPDwgbGVmdCA8PCBzaG93cG9zIDw8IHNjaWVudGlmaWMgIDw8IHNldHByZWNpc2lvbihhKSA8PCBjb3NpbnVzKHgpIDw8ICJ8IgogICAgICAgICAgIDw8IGxlZnQgPDwgc2hvd3BvcyA8PCBzY2llbnRpZmljICA8PCBzZXRwcmVjaXNpb24oYSkgPDwgaG9jaCh4KSA8PCAifCIKICAgICAgICAgICA8PCAiXG4iOwogICAgICAgICAgIHggPSB4K3o7CiAgICAgICB9ICAgICAgCiAgICAgICAKfQogICAgICAgCmRvdWJsZSBzaW51cyAoZG91YmxlIHgpIHsgICAgICAgICAgICAgICAgICAgIC8vRnVua3Rpb24gZsO8ciBTaW51cyBCZXJlY2hudW5nCiAgICAgICByZXR1cm4gc2luKHgpOwogICAgICAgfQogICAgICAgCmRvdWJsZSBjb3NpbnVzIChkb3VibGUgeCkgeyAgICAgICAgICAgICAgICAgIC8vRnVua3Rpb24gZsO8ciBDb3NpbnVzIEJlcmVjaG51bmcKICAgICAgIHJldHVybiBjb3MoeCk7CiAgICAgICB9CiAgICAgICAKZG91YmxlIGhvY2ggKGRvdWJsZSB4KSB7ICAgICAgICAgICAgICAgICAgICAgLy9GdW5rdGlvbiBmw7xyIEhvY2ggQmVyZWNobnVuZwogICAgICAgcmV0dXJuIHgqeDsKICAgICAgIH0=