[C++]数字を漢数字に変換するプログラム

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

[C++]数字を漢数字に変換するプログラム

投稿記事 by naohiro19 » 7年前

こちらのC#版のプログラムをC++に移植してみました。

以下ソースコードです。

CODE:

#include 
#include 
#include 
#include 

using namespace std;

wstring ToKansuji(long number)
{
	if (number == 0) {
		return L"〇";
	}
	vector kl = { L"", L"十", L"百", L"千" };
	vector tl = { L"", L"万", L"億", L"兆", L"京" };
	vector nl = { L"", L"一", L"二", L"三", L"四", L"五", L"六", L"七", L"八", L"九" };
	wstring str = L"";
	int keta = 0;

	while (number > 0) {
		int k = keta % 4;
		int n = static_cast(number % 10);

		if (k == 0 && number % 1000 > 0) {
			str = tl[keta / 4] + str;
		}

		if (k != 0 && n == 1) {
			str = kl[k] + str;
		}
		else if(n != 0) {
			str = nl[n] + kl[k] + str;
		}
		keta++;
		number /= 10;
	}
	return str;
}

int main()
{
	wcout.imbue(locale("japanese"));
	wcout << ToKansuji(0) << endl; // →  〇
	wcout << ToKansuji(100) << endl; // → 百
	wcout << ToKansuji(1255) << endl; // →  千二百五十五
	wcout << ToKansuji(10000) << endl; // → 一万
	wcout << ToKansuji(999999) << endl; // →  九十九万九千九百九十九
	return 0;
}
実行結果はコメントで書いてあります。
タイトルが間違っていましたので修正しました。
最後に編集したユーザー naohiro19 on 2018年1月23日(火) 07:46 [ 編集 1 回目 ]

コメントはまだありません。