Задача.
Дан текст. Группы символов, разделенные пробелами(одним или несколькими) и не содержащие пробелов внутри себя, будем называть, как и прежде, словами.
Для каждого из слов указать, сколько раз оно встречается среди всех слов, образованных символами данного текста.
Тесты
| Input | Output | Комментарий | 
| 123 321 1441 123 456 831 1441 | 123 — 2 1441 -2 321 — 1 456 — 1 831 — 1 | Пройдено | 
| iW@910 b10r l4e iW@910 10o b11 a mU611211a9 | 10o — 1 a — 1 b10r — 1 b11 — 1 iW@910 — 2 l4e — 1 mU611211a9 — 1 | Пройдено | 
| №!4%» ^&*() +|\/., №!4%» _-=~`;? | +|\/., — 1 ^&*() — 1 _-=~`;? — 1 №!4%» — 2 | Пройдено | 
| Hey Jude, don’t make it bad. Take a sad song and make it better. | Hey — 1 Jude, — 1 Take — 1 a — 1 and — 1 bad. — 1 better. — 1 don’t — 1 it — 2 make — 2 sad — 1 song — 1 | Пройдено | 
Код программы:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> #include <map> #include <cstring> #include <cstdlib> using namespace std; int main() { 	map<string, int> m; 	string word; 	while( cin >> word ) 		m[word]++; 	for(map<string, int>::iterator (it) = (m).begin(); (it) != (m).end() ; (it)++) 	{ 		cout<<it->first<<" - "<<it->second<<endl; 	} 	return 0; } | 
Ход решения:
Применяя функцию [latex]map[/latex], запишем в индекс массива [latex]m[/latex] слово и увеличим элемент массива данного индекса на единицу. Используя цикл [latex]while[/latex] мы проделаем это для каждого слова введенного с клавиатуры. Если слово повторится , то элемент снова увеличится на единицу. Таким образом получаем количество слов в данном тексте.
С помощью цикла [latex]for[/latex] выводим индекс массива (т.е. слово) и значение (его количество в тексте).
Ссылка на код
 
						
Засчитано, 10 баллов!