仕様
・言語問わず。
・数字をひらがなで読み上げる事。
・999まで読み上げられる事。
さあ!!もまえら作ってください。
プログラミング関係のブログでなんどか見たけど、実物を見たことない > ナベアツ
3 :
デフォルトの名無しさん:2008/04/27(日) 11:09:54 BE:233244825-PLT(40072)
5 :
デフォルトの名無しさん:2008/04/27(日) 15:11:47
なに
1
2
さん!
4
5
ろく!
て出せばいいの?
8 :
デフォルトの名無しさん:2008/04/28(月) 16:42:30
char* makeAho(int i, bool show)
{
char* data[] = {"いち","に","さん","よん","ご","ろく","なな","はち","きゅう"};
char* digit_data[] = {"じゅう","ひゃく","せん","まん"};
char buf[1024] = "";
int digit = 1, j = 0;
bool contain3 = false;
while((i / (10*digit) != 0)){
digit = (digit == 1) ? digit + 9: digit * 10;
j++;
if( ( i - (i/digit)*digit) / (digit/10) == 3 || i/digit == 3)
contain3 = true;
}
if( show || i > 0 && ( i % 3 == 0 || contain3)){
if( i < 10 ){
if(i > 0)strcat(buf,data[i-1]);
}
else{
if(i / (digit) != 1)
strcat(buf, data[(i / (digit)) - 1]);
strcat(buf,digit_data[j-1]);
strcat(buf,makeAho(i - (i/(digit))*digit, true));
}
if(!show)strcat(buf,"!");
}
else
sprintf(buf,"%d",i);
return buf;
}
しょぼいけど。99999までいけます。
実際に作るならやっぱり数値→ひらがな変換関数だけ別に作ってメインなりなんなりから呼んでオシマイ、かな
きゅうひゃくきゅうじゅうきゅう が入るバッファだけもらって。
>>9 return buf; がちょっとイヤです
3の倍数の時、動作がおかしくなる(´・ω・`)
4の倍数も工夫して付け足すべきである。
>>9 makeAhoにintの引数を足して、
3を引数に置き換えたら他の値に対応出来る。
bufを引数にしてやればなおよし。
逆転の発想。
3の倍数以外を賢そうにすればよい。
ものっそい複雑な数式を経由して解がそれになるようにするとかかい
というか4の倍数ってどうすんの?
4 : 0x00000100
8 : 0x00001000
12: 1ダース
16: 0x00010000
20: 20
24: 2ダース
32: 0x00100000
36: 3ダース
40: 40
ってことでいいのか?
8の倍数の時検索する
元チェッカーズの誰かに激似のアレか?
bool isAho(int input, int v)
{
if((input%v)==0 ) return (input!=0);
do if((input%10)==v) return true;
while(input/=10, input!=0);
return false;
}
nenshu<<=2