00001
00004 #include <iostream>
00005 #include <istream>
00006 #include <ostream>
00007 #include <sstream>
00008 #include <string>
00009
00010 int main()
00011 {
00012 double prev_odometer(0.0), odometer(0.0);
00013 double total_fuel(0.0);
00014 std::string line;
00015 int linenum(0);
00016 bool error(false);
00017 while (std::getline(std::cin, line))
00018 {
00019 ++linenum;
00020 std::string::size_type comment(line.find('#'));
00021 if (comment != std::string::npos)
00022 line.erase(comment);
00023 std::istringstream input(line);
00024 double fuel;
00025 if (input >> odometer)
00026 {
00027 char check;
00028 if (not (input >> fuel))
00029 {
00030 std::cerr << "Missing fuel consumption on line " << linenum << '\n';
00031 error = true;
00032 }
00033 else if (input >> check)
00034 {
00035 std::cerr << "Extra text on line " << linenum << '\n';
00036 error = true;
00037 }
00038 else if (odometer != prev_odometer)
00039 {
00040 double distance(odometer - prev_odometer);
00041 std::cout << fuel * 100 / distance << '\n';
00042 total_fuel += fuel;
00043 prev_odometer = odometer;
00044 }
00045 }
00046 }
00047 if (odometer != 0)
00048 {
00049 std::cout << "Net LP100K=" << total_fuel * 100 / odometer;
00050 if (error)
00051 std::cout << " (estimated, due to input error)";
00052 std::cout << '\n';
00053 }
00054 }