難しくはないけど、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 件のコメント:
コメントを投稿