Search on the blog

2010年12月14日火曜日

C++でParse

POJで見つけた良問。
難しくはないけど、C/C++で如何に文字列をparseするかが練習できる良い問題です。
あと、無駄なキャスト(upper cast)はしないとか、scanfやcinとgetsの使い分けとか学べます。

取りあえず、問題とソースを見てください。
もっときれいなコードが書ける人は随時募集!(たくさんいそう。。)

問題:

ソース:
char input[256];
int main() {
int h, m, s, v = 0;
double x = .0;
double t0 = .0, t1 = .0;

while (gets(input)) {
stringstream ss(input);
string s1 = "", s2 = "";

ss >> s1 >> s2;
sscanf(s1.c_str(), "%02d:%02d:%02d", &h, &m, &s);

t1 = h + m/60.0 + s/3600.0;
x += (t1 - t0) * v;
t0 = t1;

if (s2 != "")
sscanf(s2.c_str(), "%d", &v);
else
printf("%02d:%02d:%02d %.2lf km\n", h, m, s, x);
}
return 0;
}

0 件のコメント:

コメントを投稿