#include "libscl.h" using namespace scl; using namespace std; int main(int argc, char** argp, char** envp) { typedef vector::const_iterator vitr; typedef map::const_iterator mitr; ifstream fin; ofstream fout; string filename; filename = "msnbc990928.seq"; fin.open(filename.c_str()); if (!fin) error("Error, cannot open " + filename); string line; getline(fin,line); getline(fin,line); getline(fin,line); vector page = cutstr(line,' '); int count = 0; for (vitr p=page.begin(); p!=page.end(); ++p) { cout << count++ << ' ' << *p << '\n'; } page[8] = "news"; page[12] = "sports"; cout << '\n'; count = 0; for (vitr p=page.begin(); p!=page.end(); ++p) { cout << count++ << ' ' << *p << '\n'; } getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); filename = "first.tab"; fout.open(filename.c_str()); if (!fout) error("Error, cannot open " + filename); while (getline(fin,line)) { string firstpage = cutstr(line); int i = atoi(firstpage.c_str()) - 1; fout << page[i] << '\n'; } fin.clear(); fin.close(); filename = "msnbc990928.seq"; fin.open(filename.c_str()); if (!fin) error("Error, cannot open " + filename); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); fout.clear(); fout.close(); filename = "second.tab"; fout.open(filename.c_str()); if (!fout) error("Error, cannot open " + filename); while (getline(fin,line)) { vector pagenumbers = cutstr(line,' '); if (pagenumbers.size() == 1) { vitr p = pagenumbers.begin(); int i = atoi(p->c_str()) - 1; fout << page[i] << '\n'; } else { vitr p = pagenumbers.begin(); int i = atoi(p->c_str()) - 1; fout << page[i] << ' '; ++p; i = atoi(p->c_str()) - 1; fout << page[i] << "-2" << '\n'; } } fout.clear(); fout.close(); fin.clear(); fin.close(); filename = "msnbc990928.seq"; fin.open(filename.c_str()); if (!fin) error("Error, cannot open " + filename); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); getline(fin,line); fout.clear(); fout.close(); filename = "third.tab"; fout.open(filename.c_str()); if (!fout) error("Error, cannot open " + filename); while (getline(fin,line)) { map basket; vector rec = cutstr(line,' '); vector pagenumbers; vitr s = rec.begin(); vitr p = s; pagenumbers.push_back(*s); while (++p != rec.end() && *p != *s) pagenumbers.push_back(*p); if (pagenumbers.size() == 1) { vitr p = pagenumbers.begin(); int i = atoi(p->c_str()) - 1; fout << page[i] << '\n'; } else { vitr p = pagenumbers.begin(); int i = atoi(p->c_str()) - 1; fout << page[i] << ' '; ++p; i = atoi(p->c_str()) - 1; fout << page[i] << "-2" << '\n'; } } return 0; }