Требуется на основе исходного файла построить предметный указатель и вывести его в файл

girlsbest

14. Строки текстового файла input.txt состоят из слов, разделенных одним или несколькими пробелами. Перед первым, а также после последнего слова строки пробелы могут отсутствовать. Требуется на основе исходного файла построить предметный указатель и вывести его в файл output.txt. Каждая строка предметного указателя содержит слово и номера строк текстового файла, в которых это слово встречается, разделенные одним пробелом. помогите написать плиз
5 ответов

girlsbest

А слова могут повторяться???


girlsbest

да думаю, что могут..этого в условии не написано...но я думаю, что да..


girlsbest

Ну здесь не очень сложно... Но чтобы сделать - придется попотеть! За бесплатно делать никто не возьмется!!!


girlsbest

#include <fstream>
#include <string>
#include <map>
using namespace std;
 
class CDictionary
{
public:
map<string,string> mMap;
map<string,string>::iterator iT;
 
CDictionary(){};
~CDictionary(){};
void Insert(char* p,int nLine)
{
typedef pair <string,string> Int_Pair;
char szBuff[20]={0};
itoa(nLine,szBuff,10);
iT = mMap.end();
iT = mMap.find(p);
if(iT!= mMap.end())
(*iT).second += (string(" ")+string(szBuff));
else 
mMap.insert(Int_Pair(p,szBuff));
}
 
friend istream& operator>>(istream& is,CDictionary& dist)
{
string line;
int nLine = 1;
while(getline(is,line))
{
char* p;
p = strtok(const_cast<char*>(line.c_str())," ");
if(p) dist.Insert(p,nLine);
while(p = strtok(NULL," "))
dist.Insert(p,nLine);
nLine++;
}
return is;
}
friend ostream& operator<<(ostream& os, CDictionary& dist)
{
for(dist.iT=dist.mMap.begin();dist.iT!=dist.mMap.end();dist.iT++)
os << (*(dist.iT)).first << " " << (*(dist.iT)).second << endl;
return os;
}
};
 
 
int main(void)
{
ifstream infile("input.txt");
ofstream outfile("output.txt");
CDictionary dist;
infile >> dist;
outfile << dist;
return 0;
}


girlsbest

хм, BornLeader а если без классов, мы их не проходили....и без векторов....просто я еще на первом курсе..так что мне по проще нужно классы мы только взяли на лекции но на практике мы их еще не брали...тут задача в файле и массиве решаться должна, но я не понимаю как нацти номер строки и записывать все это