C++
x
63
1
2
3
4
using std::cin;
5
using std::cout;
6
using std::setw;
7
using std::string;
8
9
// 表示を開始するべき桁 (0でない最初の桁、または(全部0の場合)最後の桁) の位置を返す
10
int getDisplayStartPoint(const int num[], int n)
11
{
12
for (int i = n - 1; i > 0; i--)
13
{
14
if (num[i] != 0)
15
{
16
return i;
17
}
18
}
19
return 0;
20
}
21
22
// 値が逆順に格納された配列を1行で出力する
23
void printArray(const int num[], int n, int width)
24
{
25
int start = getDisplayStartPoint(num, n);
26
for (int i = width - 1; i >= 0; i--)
27
{
28
if (i > start)
29
{
30
cout << ' ';
31
}
32
else
33
{
34
cout << num[i];
35
}
36
}
37
cout << '\n';
38
}
39
40
int main()
41
{
42
const int n = 50;
43
string input;
44
int num[n] = {0};
45
int value[n] ;
46
int sum[n];
47
48
cout << "入力>";
49
cin >> input;
50
cout << "\n";
51
52
for (int i = 0; static_cast<unsigned int>(i) < input.length(); i++)
53
{
54
value[i] = input[input.length() - 1 - i] - '0';
55
sum[i] = num[i] + value[i];
56
}
57
58
printArray(num, n, n);
59
cout << setw(n) << input << "\n";
60
cout << "---------------------------------------------------\n";
61
printArray(sum, input.length(), n);
62
}
63
$ g++ prog.cc -Wall -Wextra -std=c++98 -pedantic
Stdin
123
Start
入力> 0 123 --------------------------------------------------- 123
0
Finish