POJ 2503 Babelfish



Description

You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.

Input

Input consists of up to 100,000 dictionary entries, followed by a blank line, followed by a message of up to 100,000 words. Each dictionary entry is a line containing an English word, followed by a space and a foreign language word. No foreign word appears more than once in the dictionary. The message is a sequence of words in the foreign language, one word on each line. Each word in the input is a sequence of at most 10 lowercase letters.

Output

Output is the message translated to English, one word per line. Foreign words not in the dictionary should be translated as "eh".

Sample Input
dog ogday
cat atcay

pig igpayfroot ootfrayloops oopslayatcayittenkayoopslay

Sample Output
cat
eh
loops


这题主要是字符串输入和map容器的使用;

问题:1.我们输入的时候应该是很多的单词,而且要求每一个单词里面有空格,这有要我们再输入的时候不能忽略空格;

2.我们需要根据后面的那一单词找到前面的那一个单词;

根据上面两个我们可以发现这里用一个map容器会简单很多;

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
 map<string,string> str;
 char ch[21];
 int t;
 string str2,first,second;
 while(gets(ch)&&strlen(ch))//如果我们输入的为空就结束输入(这就是题目要求的输入要用一个换行隔开)
 {
  string str1=ch;
  t=str1.find(' ');
  first=str1.substr(0,t);//记录前一段单词;
  second=str1.substr(t+1);//记录后一段单词;
  str[second]=first;//后一段单词作为下标,前一段单词作为值;

 }
 while(cin>>str2)
  {
   if(str[str2].size()!=0)
    cout<<str[str2]<<endl;
   else
    cout<<"eh"<<endl;
  }
 return 0;
}
需要注意的是不要把第二个while写在第一个while里面去了!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值