《ACM程序设计》书中题目B 第二题 fatmouse的语言

1.问题描述

    输入不超过十个字母的字典词条,每个词条包括一个英文单词、一个空格和fatmouse语言,将输入翻译为英文。

2.思路

    看完题后,想的是用两个string数组把输入内容和输出的翻译结果分别写入两个数组,在两数组间用map建立联系,map中的键值和实值分别对应两个string数组,用键值完成对实值的查找。但是,具体如何操作,不会做。只有一个模糊的大体框架,找不出程序的具体写法。比如:如何结束输入,具体怎样建立词条。

   在百度搜索的代码,通过读代码大体了解整体的构思和细节处理。

#include<iostream>
#include<fstream>
#include<string>
#include<map>
using namespace std;
int main()
{
    string s;
    char ss[100],s1[100],s2[100];
    map<string,string>m;
    map<string,string>::iterator p;
    while(gets(ss))
    {
        s=ss;
        if(s=="") break;                                                            //结束循环的条件
        else
        {
            sscanf(s.c_str(),"%s %s",s1,s2);                              //默认以空格键分隔字符
            m[s2]=s1;
        }                                                                                    //输入建立字典
    }
    while(gets(ss))
    {
        s=ss;
        p=m.find(s);
        if(p!=m.end())
        cout<<m[s]<<endl;
        else
        cout<<"eh"<<endl;
    }                                                                                         //利用map的查找函数输出翻译后的单词
    return 0;
}

 利用sscanf直接输入字典词条,也可以设两个数组,以空格键为间隔,分别输入,然后查找。分别输入的方法个人认为比较容易理解,适合现在我简单的思维方式。

3.体会

  基础太差,看答案之前思路很模糊,几乎没有。废了半天的劲把答案看懂了,把一个写程序的题做成了读程序的题。

   但也有收获,补充知识:map的具体应用,输入输出用法(gets,getline,scanf,sscanf)

  最后提交了好几遍显示编译错误,仔细一看是选成了c,简直被自己蠢哭。

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值