1. 焦距
使用stringstream做类型转换,计算即可,cout要按fixed输出,会按照设置的精度自动舍入
#include <iostream>
#include <sstream>
#include <cmath>
#include <string>
#include <algorithm>
using namespace std;
int T;
double fe, ce, ip;
string scales[6] = {"m", "dm", "cm", "mm", "um", "nm"};
double Transfer(string str) {
//string::size_type not size_t(c).
string::size_type sz;
//c++11
//double v_mm = stod(str, &sz);
//string unit = str.substr(sz, string::npos);
double v_mm;
string unit;
stringstream ss(str);
ss >> v_mm >> unit;
string *pos = find(scales, scales + 6, unit);
if (pos == scales + 6)
return v_mm;
int dis = scales + 3 - pos;
if (dis >= 0)
v_mm *= pow(10, dis);
else
v_mm *= pow(1000, dis);
return v_mm;
}
void Read() {
string fes, ces, ips;
cin >> fes >> ces >> ips;
fe = Transfer(fes);
ce = Transfer(ces);
ip = Transfer(ips);
return;
}
int main() {
cin >> T;
for (int c = 1; T--; ++c) {
Read();
double fp = ip * fe / ce;
//fp = round(fp * 100) / 100;
cout.precision(2);
cout << "Case " << c << ": " << fixed << fp << "px" << endl;
}
return 0;
}