练习题(一)

练习题(一)

时间限制: 1 Sec 内存限制: 128 MB
[命题人:Smile]
题目描述
为了方便大家学习,学长准备为大家搭建一个在线判题系统。由于第一次搭建,没有经验,所以有很多东西都需要来边学边整理。通过查阅资料,发现该系统大部分都是在linux操作系统实现。从没有用过linux的学长这时候是一脸懵逼的。但学长可不是一个轻言放弃的人,通过不懈努力,在一天的时间里重装了n多次系统,终于明白了linux系统下的各种命令。由于学长一直以来记性都不太好,所以经常会忘记一些刚刚写好的内容。下面由你来设计一个程序来帮帮他。
具体操作是这样的:
①创建新文件(vi,vim)
输入3个字符串s1,s2,s3。第一个字符串s1代表文件的名称,第二个字符串s2代表文件的所在文件夹(一个文件夹可能有多个文件),第三个字符串是功能块若s3为wq则表示保存并退出,否则代表只退出不保存
②删除文件(rm)
输入一个字符串,表示要删除的文件。若有此文件则删除并输出"xxx文件已删除!",否则输出"无此文件!"
③查找文件(find)
输入一个字符串,表示要查找的文件。若存在则输出此文件所在文件夹,否则输出"未找到此文件!"
注意:若文件名相同,则第二次的路径会覆盖文件本来的路径
输入
首先输入一个整数n(0<n<10000),代表接下来要进行的操作次数。
对于每次的操作:
先输入一个字符串x,代表要进行的操作方法
其次按照题目描述中对应的各个操作进行输入

输出
对于每次操作输出其结果占一行
样例输入

vi
blue_elves /mountain/sea wq
vim
angel /devil q
vim
you /world/people/body/heart wq
rm
angel
rm
blue_elves
find
you

样例输出

无此文件!
blue_elves文件已删除!
/world/people/body/heart

来源/分类
寒假练习赛
题意:
本题是通过命令来执行下面的语句,命令为vi或者vim,再输入3个字符串;命令为rm,再输入一个字符串;命令为find,再输入一个字符串;然后对该命令进行处理文件和文件夹。
思路: 因为本题题意是文件和文件夹,是映照关系,所以用map映照容器。
代码:

#include <iostream>
#include <string>   //string 头文件
#include <map>      //map头文件
using namespace std;
int main()
{
    map<string,string> m;   //创建一个映照容器m
    map<string,string>::iterator it;    //定义迭代器
    string s,s1,s2,s3;
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>s;
        if(s=="vi"||s=="vim")   //创建文件
        {
            cin>>s1>>s2>>s3;
            if(s3=="wq")    //保存退出
                m[s1]=s2;
        }
        else if(s=="rm")    //删除文件
        {
            cin>>s1;
            it=m.find(s1);
            if(it!=m.end()) //查找成功
            {
                cout<<(*it).first<<"文件已删除!"<<endl;
                m.erase(s1);    //删除文件
            }
            else    //查找不成功
                cout<<"无此文件!"<<endl;
        }
        else    //查找文件
        {
            cin>>s1;
            it=m.find(s1);
            if(it!=m.end()) //成功
            {
                cout<<(*it).second<<endl;
            }
            else    //不成功
                cout<<"未找到此文件!"<<endl;
        }
    }
    return 0;
}

运行结果:
在这里插入图片描述
总结:
本题是对map映照容器的考察,文件和文件夹是对应的,正好用映照对应刚好;因为查找的是文件名,所以把文件当作键值,文件夹当成键值映照得值。

猜你喜欢

转载自blog.csdn.net/qq_41657977/article/details/86713280