Simulate browser with a stack
1
Simulate browser with a stack
#include <iostream>
#include <stack>
#include <string>
using namespace std;
void visit(stack <string> &a, stack <string> &b, stack <string> &f, string url);
void back(stack <string> &a, stack <string> &b, stack <string> &f);
void forward(stack <string> &a, stack <string> &b, stack <string> &f);
void quit(stack <string> a);
int main(){
stack <string> a, b, f;
string url, tempURL;
string actual ("http://informatica.utem.cl");
/* pagina por defecto */
a.push(actual);
/*
################################################
Cargar paginas sin la intervencion del usuario
################################################
string url1 ("http://informatica.utem.cl/escuela");
string url2 ("http://www.informatica.utem.cl/~mcast");
string url3 ("http://www.utem.cl");
visit(a, b, f, url1);
visit(a, b, f, url2);
back(a, b, f);
back(a, b, f);
back(a, b, f);
forward(a, b, f);
visit(a, b, f, url3);
back(a, b, f);
back(a, b, f);
forward(a, b, f);
forward(a, b, f);
forward(a, b, f);
cout << endl << "Pagina Actual: ";
quit(a);
*/
/* Cargar paginas tecleadas por el usuario */
cout << "Navegacion Web" << endl;
while (true){
cout << "Para salir presiona enter o escribe QUIT!" << endl << endl;
cout << "?>: ";
if (cin.peek() == '\n'){
quit(a);
break;
}
getline(cin, url);
/* Palabras RESERVADAS */
string::size_type visitar = url.find("VISIT", 0);
string::size_type espacio = url.find(" ", 0);
string::size_type atras = url.find("BACK", 0);
string::size_type adelante = url.find("FORWARD", 0);
string::size_type salir = url.find("QUIT", 0);
if (visitar != string::npos){
tempURL.assign(url, 6, url.size());
if (espacio != string::npos){
visit(a, b, f, tempURL);
cout << "OK!" << endl << endl;
}
}
if (atras != string::npos){
back(a, b, f);
cout << "OK!" << endl << endl;
}
if (adelante != string::npos){
forward(a, b, f);
cout << "OK!" << endl << endl;
}
if (salir != string::npos){
quit(a);
cout << "OK!" << endl << endl;
break;
}
}
cout << endl << "Presiona una tecla para salir ... ";
cin.get(); cin.get();
return 0;
}
void visit(stack <string> &a, stack <string> &b, stack <string> &f, string url){
b.push(a.top());
a.push(url);
while (!f.empty()) f.pop();
quit(a);
}
void back(stack <string> &a, stack <string> &b, stack <string> &f){
if (b.empty()){
cout << "ignorado" << endl;
}
else {
f.push(a.top());
a.push(b.top());
b.pop();
quit(a);
}
}
void forward(stack <string> &a, stack <string> &b, stack <string> &f){
if (f.empty()){
cout << "ignorado" << endl;
}
else {
b.push(a.top());
a.push(f.top());
f.pop();
quit(a);
}
}
void quit(stack <string> a){
cout << endl << "Actual: " << a.top() << endl;
}






There are currently no comments for this snippet.