Мне просто в дальнейшем как то надо запомнить, число повторений слов и номера строк, в которых они встречаются, как это сделать. Вот такой у меня вопрос.
Добавлено через 1 минуту и 21 секунду Думал на счёт того, чтобы создать вектор char и добавлять к нему соответствующие номера строк при поиске одинаковых слов.
Добавлено через 9 минут и 31 секунду
Код | #include "stdafx.h" #include <iostream> #include <vector> #include <map> #include <string> #include <windows.h> #include <algorithm> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) {SetConsoleOutputCP(1251); SetConsoleCP(1251); cout<<"Вводите текст:"<<endl; string s; int l=1,z; cout<<l; cout<<' '; vector<string> vec; /*объявленпе переменной из контейнера вектор (типа список)*/ vector<int> vec2; do { cin >> s; /*ввод текста через пробел*/ if((s!=".")&&(s!="exit")) {cout<<"";vec.push_back(s);/*добавление в конец*/ vec2.push_back(z);} else {l++;} z=l; }while(s!="exit"); cout<<"Частота с какой встречаются слова"<<endl; vector<int> v; /*еще одна переменная типа вектор*/ vector<char*> v2; for(size_t i = 0;i<vec.size();++i) /*счетчик, а size-размер введенного текста */ { int count = 0; char* q; vector<string>::iterator it = find(vec.begin(),vec.end(),vec[i]); for(vector<string>::iterator iter = vec.begin(); iter != vec.end();++iter) /*циклик для сравнивания нового итератора со старым*/ { if(*iter == *it) /*и если они равны, то счетчик от слова плюсуется*/ {++count; } } v.push_back(count); /*и это количество записывается в перменную v*/ v2.push_back(q); }
map<string,int> m_map; /*ассоциативный массик. стринг - ключ, инт - значение*/
for(size_t i = 0;i<vec.size();++i) m_map[vec[i]] = v[i]; /*и вот мы собсно туда и записываем все предыдущее, слова и их встречаемость*/
for(map<string,int>::iterator iter = m_map.begin();iter != m_map.end();++iter) /*вывод на печать))*/ { cout<<iter->first<<' '<<iter->second<<endl; } return 0; }
|
На данный момент, работает только число потворений (взят пример). |