アームストロング数を計算するC++クラスのプログラムを書いています。プログラムは、各出力行が次のように読み取られることを除いて、正常に動作します。
Armstrong number 1: xxx
Armstrong number 2: xxx
Armstrong number 3: xxx
Armstrong number 4: xxx, etc...
計算は正しいですが、増分番号「アームストロング番号1」、2、3などを与えるカウンターは、実際のアームストロングの結果のみを反映しています。表示された行を数えるために必要です。
コードは以下のとおりです。
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
// Change the console's background color.
system ("color F0");
// Declare the variables
int i = 0, counter = 1, var1, var2, var3, var4;
while (i < 1000)
{
var1 = i/100;
var2 = (i % 100) / 10;
var3 = (i % 100) % 10;
var4 = (var1 * var1 * var1) + (var2 * var2 * var2) + (var3 * var3 * var3);
if (i == var4)
cout << "\n Armstrong number " << counter << ": " << var4;
counter++;
i++;
}
cout << "\n";
system ("pause");
return 0;
}
これを修正するにはどうすればよいですか?
必要なもの:アームストロング番号1:0アームストロング番号2:1アームストロング番号3:153アームストロング番号4:370
私が得るものは次のとおりです:アームストロング番号0:0アームストロング番号1:1アームストロング番号153:153アームストロング番号370:370