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里面去了!!!!!!