0

C++ プログラミング クラスの宿題に問題があります。

割り当ては次のとおりです。

行数を読み取り、「n」行の数字を出力するプログラムを作成します。

1

12

123

1234

12345

i 番目の行は 1234 です。. . k ここで、k = i mod 10. 行が 10 桁を超える場合、9 の後の桁は 0 から再度開始する必要があります。たとえば、行数が 15 の場合、出力は次のようになります。

12

123

1234

12345

123456

1234567

12345678

123456789

1234567890

12345678901

123456789012

1234567890123

12345678901234

123456789012345

これは私がこれまでに持っているものです:

#include <iostream>
using namespace std;

int main()
{
    int rows(0);
    int i(0);
    int j(0);

    cout << "Enter number of rows: ";
    cin >> rows;

    int k=rows;
    i=1;

    while (i <= rows)
    {  
        j=1;
        while(j <= i)
    {
        cout << j;
        j++;
    }
        cout << endl ;
        i++;
    }

    return (0);
}

これは、10行目に到達するまで完全に機能します。カウンターを 0 にリセットして 1 ~ 9 に戻す方法がわかりません。ステートメントを推測してifいますが、正しく実装する方法がわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

4

を使用すると、等しいcout << j%10ものの 1 桁が常に出力されます。jそのj = 10ため、cout << j%10いつ印刷されますか0など。

于 2013-10-03T03:20:26.490 に答える
2

他の答えを少し拡張するには:

%剰余演算子と呼ばれます。「モジュロ」または「モジュラス」と呼ばれることもあります。最初の引数を 2 番目の引数で割った余りを返します。したがって、この状況では、数値を 0 から 9 の間にしたいので、 がある場合に何が起こるかを考えてくださいn % 10

8 / 10 == 0 remainder 8
9 / 10 == 0 remainder 9
10 / 10 == 1 remainder 0
11 / 10 == 1 remainder 1
12 / 10 == 1 remainder 2

等。

C++ では、ほとんどのプログラミング言語と同様に、通常は 0 からカウントを開始し、範囲内の最後の数値を除外します。したがって、 があった場合n % 56、0 から始まる出力は 55 まで上がり、その後再び 0 にリセットされます。これに対する古典的な議論は、ダイクストラによって書かれました。

http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html

于 2013-10-03T03:29:39.523 に答える