64,648
社区成员
发帖
与我相关
我的任务
分享
float f;
string str = "0.9144";
f = atof(str.data());
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#include <sstream>
#include <map>
using namespace std;
ifstream input("input.txt");
ofstream output("output.txt");
map<string,string> divisionMap;
double deal(string str1,string str2)
{
if (str2 == "feet")
{
str2 = "foot";
}
map<string,string>::iterator it = divisionMap.find(str2);
if (it == divisionMap.end())
{
it = divisionMap.find(str2.substr(0,str2.length()-1));
if (it == divisionMap.end())
{
it = divisionMap.find(str2.substr(0,str2.length()-2));
if (it == divisionMap.end())
{
return 0;
}
}
}
return atof(str1.c_str())*atof((it->second).c_str());
}
int main()
{
double sum = 0.0;
string strline = " ";
string strword1 = " ";
string strword2 = " ";
string division,meters;
while (getline(input,strline) && strline != "")//建立 转换关系映射
{
istringstream line(strline);
while(line>>division>>division>>meters>>meters)
{
divisionMap.insert(make_pair(division,meters));
}
}
output<<"wang_chp@sina.cn"<<endl<<endl;
bool minus = false;
while(getline(input,strline) && strline != " ") //处理表达式
{
istringstream line(strline);
while(line>>strword1)
{
if (strword1 == "+")
{
continue;
}
if (strword1 == "-")
{
minus = true;
continue;
}
line>>strword2;
if (minus)
{
sum += -deal(strword1,strword2);
minus = false;
}else{
sum += deal(strword1,strword2);
}
}
output<<setiosflags(ios::fixed)<<setprecision(2)<<sum<<" m"<<endl;
sum = 0;
}
input.close();
output.close();
return 0;
}