2016-10-16 10 views
0

数字dと自然数xを受け取るITERATIVEプロシージャwrite_digit(d、x)を記述し、数字dを標準出力(cout)にx回書き込む必要があります。たとえば、write_digit(3,5)コールは33333を書き込み、write_digit(5,3)コールは555を書き込みます。プログラムが機能しません(先行ゼロ)

このコードに問題があり、先行ゼロと関係があるとします。例: write_digit(0,3) - > 000 - >マイ出力:0(ない驚き)私はしかし

if (d == 0) cout << setw(x) << setfill('0') << ""; 

をiomanip使用を許可された場合、問題は1分で解決されるだろう

私はiostreamとstringだけを使うことができます。

#include <iostream> 

using namespace std; 

void write_digit(int d,int x) { 
    int original_d = d; 
    for (int i = 1; i < x; ++i) d = d*10 + original_d; 
    if (x == 0) cout << ""; 
    else cout << d; 
} 

int main() { 
    int d,x; 
    cin >> d >> x; 
    write_digit(d,x); 
} 

答えて

1

あなたは完全にただのエッジ条件なしに単純なループを作り、それも非数字のために、任意の数のために働くだろう、割り当てを過度に複雑されています。

void write_digit(int d, int x) { 
    for (int i = 0; i < x; ++i) // Loop x times 
     std::cout << d;   // Output digit 
    std::cout << '\n';   // Output newline 
} 
+0

完全にこの可能性を忘れてしまった、私を黙らせてください。 –

関連する問題