题意概述:本题是一个模拟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;
}