Fragen zur Formatierung



  • Hallo zusammen,

    ich habe ein kleineres Formatierungsproblem. Das Programm macht eigentlich was es sollte. Die Funktionen für die Berechnung der Werte können natürlich auch direkt von der cmath lib genommen werden. Aber ich benötige diese um diese später evt. noch zu erweitern.

    Die auszugebene Tabelle sollte untereinander stehen, aber irgendwie funktioniert dies nicht.
    Zu einem für die Überschriften und zum anderen werden die Werte nicht auf die Stellen gekürzt.

    Hat jemand eine Idee wie ich das besser hinbekommen kann, bzw. zum Laufen bekomme?

    #include <iostream>
    #include <iomanip>
    #include <cmath>
    using namespace std;
    
    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";
    
         cout <<setw(sigziffern) << "x" <<"| sin(x)" << setw(sigziffern)
         << "| cos(x)" << setw(sigziffern) << "| x^2" << setw(sigziffern) << "\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;
           }
    


  • ...


  • Mod

    Da wir nicht genau wissen können, wie das scientific-Format aussieht (z.B. Anzahl der Ziffern des Exponenten), fällt mir als Notnagel nur so etwas ein:

    unsigned length;
         {
             stringstream s;
             s << left << showpos << scientific  << setprecision(sigziffern) << 1.0;
             length = s.str().size();
         }
         // length in setw benutzen
    

    Oder, da setw nicht gut zum Zentrieren ist und mir das aber besser gefällt, basteln wir uns auch noch etwas dafür:
    http://ideone.com/IvQKXZ

    Eigentlich würde ich aber einfach Tabs nehmen.


Anmelden zum Antworten