Wyświetlanie w Notacji Naukowej
Ostatnio zmodyfikowano 2016-02-02 22:35
Nitr0Skay Temat założony przez niniejszego użytkownika |
Wyświetlanie w Notacji Naukowej » 2016-02-02 19:59:16 Witam. Otóż mam pewien problem z wyświetleniem pewnej informacji w notacji naukowej. Nigdy bowiem tego nie robiłem i nie bardzo znam możliwości edycyjne tego zapisu. Otóż mam takie zadanie: "Napisz program formatujący wydruki w taki sposób, że wypisuje w kolejnych 15. wierszach potęgi liczby PI (od y=1 do y=15), które będą poprzedzone numerem potęgi: 4. w formacie naukowym, z dokładnością do trzech cyfr znaczących w taki sposób, aby wszystkie kropki dziesiętne znalazły się w jednej kolumnie. Numer potęgi należy drukować tak, jak w po-przednim punkcie." No i mam taki podprogramik: cout << endl << "Format Naukowy" << endl << hr << endl; cout << "0. "; cout.precision( 2 ); cout << scientific << 1.0 << endl; for( int y = 1; y <= 15; y++ ) { cout.precision( 2 ); cout << y << ". "; if( y < 10 ) cout << " "; cout << scientific << pow( M_PI, y ) << endl; }
Wyniki powinny wyjść takie: 0 1.00e+00 1 3.14e+00 2 9.87e+00 3 3.10e+01 4 9.74e+01 5 3.06e+02 6 9.61e+02 .. ……….. 13 2.90e+06 14 9.12e+06 Mi wychodzą takie: http://imgur.com/sPHVcU9 No i teraz nie bardzo wiem, jak doprecyzować, aby po e+ były zapisane dwie cyfry, dokładnie takie, jakie powinny być. Jako iż pierwszy raz mam napisać coś w notacji naukowej, to jestem otwarty na propozycje. Z góry dziękuję |
|
pekfos |
» 2016-02-02 21:21:08 Ilość cyfr wykładnika jest zależna od implementacji i raczej nie można jej nigdzie ustawić. |
|
carlosmay |
» 2016-02-02 21:36:22 Można wyniki zrzutować do stringa i usunąć zbędne zero, jeżeli to ma być dokładnie jak przykład. Taki mały przykład naskrobałem. Może się przyda. #include <iostream> #include <string> #include <sstream> #include <iomanip> #include <limits> #include <cmath>
for( int y = 1; y <= 15; ++y ) { std::ostringstream oss; oss.precision( std::numeric_limits < double >::digits10 ); oss << std::scientific << std::setprecision( 2 ) << pow( M_PI, y ); std::string scient = oss.str(); scient.erase( scient.size() - 3, 1 ); std::cout << scient << std::endl; } |
|
Nitr0Skay Temat założony przez niniejszego użytkownika |
» 2016-02-02 22:35:10 Dziękuję za odpowiedzi i przydatną sugestię ;) |
|
« 1 » |