POJ 2503 Babelfish

题目来自POJ 2503链接

题目

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 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 igpay
froot ootfray
loops oopslay


atcay
ittenkay
oopslay
Sample Output
cat
eh
loops
Hint

分析

  • 输入:每行输入空格隔开的2个字符串,前一个是英文,后一个是口音。输入完字典之后隔一个空行,输入要翻译的词,每行一个。如果要翻译的词不在字典中,输出eh
  • 输出:翻译出来的英文单词
  • 思路:应用map模版,将字典添加进map,前一个是value,后一个是key。
  • 难点:字符串的处理:“空格”的分割、空行的判断;至于map应用的部分,注意类型即可。

代码

#include<iostream>
#include<string>
#include<map>
using namespace std;

int main()
{
	char line[22];//需要接收2个单词的输入
	char key[11], value[11];//每个单词最多10个字符,但需要把\0算进去
	map<string,string> dic;//放在map内的字典。
	
	while (1)
	{
		cin.getline(line, 22);
		if (line[0] == '\0')break;
		sscanf(line, "%s%s", value, key);
		dic.insert(pair<string, string>(key, value));
	}
	while (1)
	{
		cin.getline(key, 11);
		if (key[0] == '\0')break;
		if (dic.find(key) != dic.end())
			cout << dic[key] << endl;
		else
			cout << "eh" << endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值