Babelfish
你刚从滑铁卢搬到了大城市。这里的人们讲一种难以理解的外语方言。幸运的是,你有一本字典来帮助你理解它们。
输入
输入包括多达100,000个字典条目,然后是一条空白行,然后是多达100,000字的信息。每本字典条目都是一行包含一个英语单词,然后是一个空间和一个外语单词。字典中没有外国词出现不止一次。消息是外语单词的序列,每行一个单词。输入中的每个单词最多是 10 个小写字母的序列。
输出
输出是翻译成英语的信息,每行一个单词。字典里没有的外国单词应该翻译成"嗯"。
示例输入
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
样品输出
cat
eh
loops
提示
建议使用巨大的输入和输出、扫描和打印。
题意描述:给多组数组,每组包含一个英语单词,一个空格一个外语单词,然后给外语单词,输出它对应的英语单词
解题思路:
AC1:先用gets存入数据,然后利用sscanf来把英语单词和外语单词分开,然后利用map存入外语单词,map值为与之对应的英语单词,然后再输入给的外语单词,输出英语单词即可,没有与之对应的输出“eh”
AC2:不同于上面的sscanf,这个是建立两个字符串来存我们输入的长的带空格的字符串(具体看代码),其它都一样
注意:本题的输入格式
AC1:
#include<cstdio>
#include<map>
#include<iostream>
using namespace std;
map<string,string>x;
int main(void)
{
char a[100],b[50],c[50];
while(gets(a)&&a[0]!='\0')
{
sscanf(a,"%s %s",b,c);//输入格式
x[c]=b;
}
while(gets(a))
{
if(x.find(a)!=x.end())
cout<<x[a]<<endl;
else
cout<<"eh"<<endl;
}
return 0;
}
AC2
#include<cstdio>
#include<map>
#include<string.h>
#include<iostream>
using namespace std;
map<string,string>x;
int main(void)
{
char a[100],b[50],c[50];
while(gets(a)&&strlen(a)!=0)
{
int i,j,k;
for(i=0;a[i]!=' ';i++)
b[i]=a[i];
b[i]='\0';
for(j=i+1,k=0;j<=strlen(a);k++,j++)
c[k]=a[j];
x[c]=b;
}
while(gets(a))
{
if(x.find(a)!=x.end())
cout<<x[a]<<endl;
else
cout<<"eh"<<endl;
}
return 0;
}