開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Xcode - Apple
- Windows 10 Pro (OS)
- Visual Studio (コンパイラー)
- Visual Studio Code (Text Editor)
- C++17 (プログラミング言語)
Modern C++チャレンジ ―C++17プログラミング力を鍛える100問 (Marius Bancila(著)、島 敏博(監修)、黒川 利明(翻訳)、オライリージャパン)の1章(数学の問題)、問題11(ローマ数字に変換)の解答を求めてみる。
コード
#include <iostream>
int main()
{
for (size_t i = 1; i <= 100; i++)
{
std::cout << i << ": ";
size_t r = i / 100;
size_t n = i % 100;
for (size_t i = 0; i < r; i++)
{
std::cout << 'C';
}
r = n / 10;
n %= 10;
if (r == 9)
{
std::cout << "XC";
}
else if (r == 4)
{
std::cout << "XL";
}
else
{
if (r / 5)
{
std::cout << 'L';
}
for (size_t i = 0; i < r % 5; i++)
{
std::cout << 'X';
}
}
r = n;
if (r == 9)
{
std::cout << "IX";
}
else if (r == 4)
{
std::cout << "IV";
}
else
{
if (r / 5)
{
std::cout << 'V';
}
for (size_t i = 0; i < r % 5; i++)
{
std::cout << 'I';
}
}
std::cout << std::endl;
}
}
入出力結果(cmd(コマンドプロンプト)、Terminal)
Active code page: 65001 C:\Users\...>cl /O2 sample11.cpp && sample11.exe Microsoft(R) C/C++ Optimizing Compiler Version 19.16.27027.1 for x64 Copyright (C) Microsoft Corporation. All rights reserved. sample11.cpp C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xlocale(319): warning C4530: C++ 例外処理を使っていますが、アンワインド セマンティクスは有効にはなりません。/EHsc を指定してください。 Microsoft (R) Incremental Linker Version 14.16.27027.1 Copyright (C) Microsoft Corporation. All rights reserved. /out:sample11.exe sample11.obj 1: I 2: II 3: III 4: IV 5: V 6: VI 7: VII 8: VIII 9: IX 10: X 11: XI 12: XII 13: XIII 14: XIV 15: XV 16: XVI 17: XVII 18: XVIII 19: XIX 20: XX 21: XXI 22: XXII 23: XXIII 24: XXIV 25: XXV 26: XXVI 27: XXVII 28: XXVIII 29: XXIX 30: XXX 31: XXXI 32: XXXII 33: XXXIII 34: XXXIV 35: XXXV 36: XXXVI 37: XXXVII 38: XXXVIII 39: XXXIX 40: XL 41: XLI 42: XLII 43: XLIII 44: XLIV 45: XLV 46: XLVI 47: XLVII 48: XLVIII 49: XLIX 50: L 51: LI 52: LII 53: LIII 54: LIV 55: LV 56: LVI 57: LVII 58: LVIII 59: LIX 60: LX 61: LXI 62: LXII 63: LXIII 64: LXIV 65: LXV 66: LXVI 67: LXVII 68: LXVIII 69: LXIX 70: LXX 71: LXXI 72: LXXII 73: LXXIII 74: LXXIV 75: LXXV 76: LXXVI 77: LXXVII 78: LXXVIII 79: LXXIX 80: LXXX 81: LXXXI 82: LXXXII 83: LXXXIII 84: LXXXIV 85: LXXXV 86: LXXXVI 87: LXXXVII 88: LXXXVIII 89: LXXXIX 90: XC 91: XCI 92: XCII 93: XCIII 94: XCIV 95: XCV 96: XCVI 97: XCVII 98: XCVIII 99: XCIX 100: C C:\Users\...>
1から100まで。なので使うローマ数字はI(1)、V(5)、X(10)、L(50)、C(100)。
0 コメント:
コメントを投稿