pku 1028 模拟法

来源:互联网 发布:知乎 日本中国 编辑:程序博客网 时间:2024/05/19 05:02

这里写图片描述

题意概述:本题是一个模拟Web浏览器的程序。默认主页为http://www.acm.org/输入为指令,输出为当前页面的网址。输入的指令有4种:
(1)VISIT(后接一个网址)—— 访问它后面紧接着的网址
(2)BACK——访问当前网页的前一个
(3)FORWARD——访问当前网页的后一个
(4)QUIT——退出(关闭浏览器)

思路:必须记录访问过的网址,因为是顺序关系,所以用数组存储,下标为0的元素为默认页;有一个变量记录当前页面在数组中的位置;BACK和FORWARD指令可能出现特殊情况:
(1)BACK到默认页再BACK——输出Ignored
(2)FORWARD到最后一个访问到的页面再FORWARD——输出Ignored

#include<iostream>#include<cstring>using namespace std;int check(char *command)//每个命令对应一个数字 {    if(strcmp(command,"VISIT") == 0)        return 0;    if(strcmp(command,"BACK") == 0)        return 1;    if(strcmp(command,"FORWARD") == 0)        return 2;    if(strcmp(command,"QUIT") == 0)        return 3;}int main(){    char browsers[101][71] = {"http://www.acm.org/"};    char command[10];    int i = 0;//网站目前位置     int cur = 0;//网站目前个数     while(cin>>command)    {        int n = check(command);        switch(n)//命令选择         {            case 0:                i++;                cur = i;                cin>>browsers[i];                cout<<browsers[i]<<endl;                break;            case 1:                i--;//退回上一位置                 if(i>=0)                    cout<<browsers[i]<<endl;                else                {                    cout<<"Ignored"<<endl;                    i++;//已经没有网站可以浏览,位置归0                 }                break;            case 2:                i++;//进入下一位置                 if(i<=cur)                    cout<<browsers[i]<<endl;                else                {                    cout<<"Ignored"<<endl;                    i--;//已经没有网站可以浏览,位置归cur                 }                break;            case 3:                return 0;//退出         }    }    return 0;} 
原创粉丝点击