私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「母は大きく子は小さく」(CodeIQ)を参照してください。
問題
仕様
標準入力
・標準入力には [A-Z]もしくは[a-z] の組み合わせからなる5文字の文字列が5行入力されます
【例】
YZjBo
tGlFy
ugtuI
NmhMY
dAIaN
標準出力
・各行の入力に母音 [aiueoAIUEO] が含まれていれば行の文字列をすべて大文字にして出力してください
・各行の入力が母音以外の文字列のみで構成されていれば行の文字列をすべて小文字にして出力してください
例(標準入力のケースに対応する出力)
YZJBO
tglfy
UGTUI
nmhmy
DAIAN
その他の仕様
・標準入力の末尾には改行があります
・標準出力の末尾に改行をつけてください
・標準入力の仕様で説明した内容以外の入力は行われません
Samples
Sample1
Input
cizzB
sHUIi
xtvEa
IAWEX
JiqHp
Output
CIZZB
SHUII
XTVEA
IAWEX
JIQHP
Sample2
Input
kzHjl
LyTMX
uiFJK
FNzpA
utZsj
Output
kzhjl
lytmx
UIFJK
FNZPA
UTZSJ
Sample3
Input
EmBGp
Xndzi
hYdWQ
NfiEJ
AyRrh
Output
EMBGP
XNDZI
hydwq
NFIEJ
AYRRH
Rubyで解答しています。
#!/usr/bin/ruby # main while line = gets line.strip! if line.empty? then next end uc = line.upcase dc = line.downcase if dc =~ /(a|i|u|e|o)/ then puts uc else puts dc end end
非常に簡単な問題です。
要するに入力値に母音が含まれているかどうかを判断すれば良い分けです。
ucは全部大文字に直した文字列、dcは全部小文字に直した文字列です。
全部小文字に直した文字列を正規表現でチェックしてa,i,u,e,oのどれかが含まれていたらucを、そうでなければdcを表示します。
C言語でやるとちょっと面倒です(簡単なのには変わりありませんが)。