2017-09-23 13 views
0

好的,所以我正在編寫一個程序,其總體目的不一定非常重要,但是在程序中有一點我試圖打印出一張顯示n,n!和x^n(其中n和x都是用戶輸入)的表格。在C++中沒有科學記數法的循環中顯示特定數字的問題

我迄今的代碼如下:

#include <iostream> 
#include <iomanip> 
#include <cmath> 
using namespace std; 

int main() 
{ 
    float x, xn, factorial = 1; 
    float n = 1; 

    cout << "Enter an angle in radians: "; 
    cin >> x; 
    while (n <= 1) 
    { 
     cout << "Enter the number of terms to be included into the Taylor series expansion: "; 
     cin >> n; 
     if (n < 1) 
     { 
      cout << "Error! Try again\n"; 
     } 
    } 

    cout << "n\tn!\tx^n\t\n"; 
    for (int i = 1; i <= n; i++) 
    { 
     cout << i; 
     factorial *= i; 
     cout << "\t" << factorial; 
     xn = pow(x, i); 
     cout << "\t" << setprecision(i) << xn; 
     cout << endl; 

    } 

    return 0; 
} 

現在,我遇到的問題是,它開始顯示我的X^n的科學記數法不言而喻過去的5位小數後。我不希望它這樣做。正如你可能已經注意到的那樣,我嘗試過使用setprecision(i),但那並不能完成這項工作。這讓我感到困惑,因爲a。)我不確定我知道我需要使用的代碼來讓它停止以科學記數法和b來顯示。)我不希望n和n的其他輸出!受到操作的影響,我將不得不使用x^n的輸出,這對我來說很棘手,因爲它們都是在同一個循環中計算和輸出的。我在這裏不知所措,非常感謝任何幫助!我會爲你們發佈一個程序輸出的圖像,但是看起來我需要更多的聲譽才能做到這一點。另外,在附註中,如果您有更好的方法來格式化我的表格,我很樂意聽到它。

回答

0

打印xn之前,您可以切換流使用固定的符號,和之後,切換回默認的浮動:

cout << "\t" << setprecision(i) << std::fixed << xn << std::defaultfloat; 

參考文獻:http://en.cppreference.com/w/cpp/io/manip/fixed

+0

這做的伎倆!謝謝一堆。我也有一個問題 - 在我來到這裏之前,我嘗試了幾乎完全相同的代碼,但是我已經在setprecision(i)之前有了std :: fixed(在你的代碼中情況正好相反) - 它沒有工作。你知道這是爲什麼嗎?我覺得我可能不完全理解這兩個陳述是如何協同工作的。 –

+0

沒有理由。你可以在這裏看到([coliru](http://coliru.stacked-crooked.com/a/3bf869a1868c2d56)),即使在換位 – Amadeus

相關問題